java学习
import
java.util.*;
002
java.text.*;
003
java.util.Calendar;
004
public
class
VeDate {
005
/**
006
* 获取现在时间
007
*
008
* <a href="http://my.oschina.net/u/556800" target="_blank" rel="nofollow">@return</a> 返回时间类型 yyyy-MM-dd HH:mm:ss
009
*/
010
static
Date getNowDate() {
011
Date currentTime =
new
Date();
012
SimpleDateFormat formatter =
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
013
String dateString = formatter.format(currentTime);
014
ParsePosition pos =
ParsePosition(
8
015
Date currentTime_2 = formatter.parse(dateString, pos);
016
return
currentTime_2;
017
}
018
019
020
021
* @return返回短时间格式 yyyy-MM-dd
022
023
Date getNowDateShort() {
024
025
"yyyy-MM-dd"
026
027
028
029
030
031
032
033
034
* @return返回字符串格式 yyyy-MM-dd HH:mm:ss
035
036
String getStringDate() {
037
038
039
040
dateString;
041
042
043
044
045
* <a href="http://my.oschina.net/u/556800" target="_blank" rel="nofollow">@return</a> 返回短时间字符串格式yyyy-MM-dd
046
047
String getStringDateShort() {
048
049
050
051
052
053
054
* 获取时间 小时:分;秒 HH:mm:ss
055
056
* <a href="http://my.oschina.net/u/556800" target="_blank" rel="nofollow">@return</a>
057
058
String getTimeShort() {
059
"HH:mm:ss"
060
061
062
063
064
065
* 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
066
067
* @param strDate
068
069
070
Date strToDateLong(String strDate) {
071
072
0
073
Date strtodate = formatter.parse(strDate, pos);
074
strtodate;
075
076
077
* 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
078
079
* @param dateDate
080
081
082
String dateToStrLong(java.util.Date dateDate) {
083
084
String dateString = formatter.format(dateDate);
085
086
087
088
* 将短时间格式时间转换为字符串 yyyy-MM-dd
089
090
091
* @param k
092
093
094
String dateToStr(java.util.Date dateDate) {
095
096
097
098
099
100
* 将短时间格式字符串转换为时间 yyyy-MM-dd
101
102
103
104
105
Date strToDate(String strDate) {
106
107
108
109
110
111
112
* 得到现在时间
113
114
115
116
Date getNow() {
117
118
currentTime;
119
120
121
* 提取一个月中的最后一天
122
123
* @param day
124
125
126
Date getLastDate(
long
day) {
127
Date date =
128
date_3_hm = date.getTime() -
3600000
34
* day;
129
Date date_3_hm_date =
Date(date_3_hm);
130
date_3_hm_date;
131
132
133
134
135
* <a href="http://my.oschina.net/u/556800" target="_blank" rel="nofollow">@return</a> 字符串 yyyyMMdd HHmmss
136
137
String getStringToday() {
138
139
"yyyyMMdd HHmmss"
140
141
142
143
144
* 得到现在小时
145
146
String getHour() {
147
148
149
150
String hour;
151
hour = dateString.substring(
11
,
13
152
hour;
153
154
155
* 得到现在分钟
156
157
158
159
String getTime() {
160
161
162
163
String min;
164
min = dateString.substring(
14
16
165
min;
166
167
168
* 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
169
170
* @param sformat
171
* yyyyMMddhhmmss
172
173
174
String getUserDate(String sformat) {
175
176
SimpleDateFormat(sformat);
177
178
179
180
181
* 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟
182
183
String getTwoHour(String st1, String st2) {
184
String[] kk =
null
;
185
String[] jj =
186
kk = st1.split(
":"
187
jj = st2.split(
188
if
(Integer.parseInt(kk[
]) < Integer.parseInt(jj[
]))
189
"0"
190
else
{
191
double
y = Double.parseDouble(kk[
]) + Double.parseDouble(kk[
1
]) /
60
192
u = Double.parseDouble(jj[
]) + Double.parseDouble(jj[
193
((y - u) >
)
194
y - u +
""
195
196
197
198
199
200
* 得到二个日期间的间隔天数
201
202
String getTwoDay(String sj1, String sj2) {
203
SimpleDateFormat myFormatter =
204
day =
205
try
206
java.util.Date date = myFormatter.parse(sj1);
207
java.util.Date mydate = myFormatter.parse(sj2);
208
day = (date.getTime() - mydate.getTime()) / (
24
1000
209
catch
(Exception e) {
210
211
212
day +
213
214
215
* 时间前推或后推分钟,其中JJ表示分钟.
216
217
String getPreTime(String sj1, String jj) {
218
SimpleDateFormat format =
219
String mydate1 =
220
221
Date date1 = format.parse(sj1);
222
Time = (date1.getTime() /
) + Integer.parseInt(jj) *
223
date1.setTime(Time *
224
mydate1 = format.format(date1);
225
226
227
mydate1;
228
229
230
* 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
231
232
String getNextDay(String nowdate, String delay) {
233
234
235
String mdate =
236
Date d = strToDate(nowdate);
237
myTime = (d.getTime() /
) + Integer.parseInt(delay) *
238
d.setTime(myTime *
239
mdate = format.format(d);
240
mdate;
241
(Exception e){
242
243
244
245
246
* 判断是否润年
247
248
* @param ddate
249
250
251
boolean
isLeapYear(String ddate) {
252
253
* 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
254
* 3.能被4整除同时能被100整除则不是闰年
255
256
Date d = strToDate(ddate);
257
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
258
gc.setTime(d);
259
int
year = gc.get(Calendar.YEAR);
260
((year %
400
) ==
261
true
262
4
) {
263
264
false
265
266
267
268
269
270
271
* 返回美国时间格式 26 Apr 2006
272
273
* @param str
274
275
276
String getEDate(String str) {
277
278
279
Date strtodate = formatter.parse(str, pos);
280
String j = strtodate.toString();
281
String[] k = j.split(
" "
282
k[
2
] + k[
].toUpperCase() + k[
5
].substring(
283
284
285
* 获取一个月的最后一天
286
287
* @param dat
288
289
290
String getEndDateOfMonth(String dat) {
// yyyy-MM-dd
291
String str = dat.substring(
292
String month = dat.substring(
7
293
mon = Integer.parseInt(month);
294
(mon ==
|| mon ==
3
10
12
295
str +=
"31"
296
6
9
297
"30"
298
299
(isLeapYear(dat)) {
300
"29"
301
302
"28"
303
304
305
str;
306
307
308
* 判断二个时间是否在同一个周
309
310
* @param date1
311
* @param date2
312
313
314
isSameWeekDates(Date date1, Date date2) {
315
Calendar cal1 = Calendar.getInstance();
316
Calendar cal2 = Calendar.getInstance();
317
cal1.setTime(date1);
318
cal2.setTime(date2);
319
subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
320
(
== subYear) {
321
(cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
322
323
== subYear &&
== cal2.get(Calendar.MONTH)) {
324
// 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
325
326
327
(-
== cal1.get(Calendar.MONTH)) {
328
329
330
331
332
333
334
* 产生周序列,即得到当前时间所在的年度是第几周
335
336
337
338
String getSeqWeek() {
339
Calendar c = Calendar.getInstance(Locale.CHINA);
340
String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
341
(week.length() ==
342
week =
+ week;
343
String year = Integer.toString(c.get(Calendar.YEAR));
344
year + week;
345
346
347
* 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
348
349
* @param sdate
350
* @param num
351
352
353
String getWeek(String sdate, String num) {
354
// 再转换为时间
355
Date dd = VeDate.strToDate(sdate);
356
Calendar c = Calendar.getInstance();
357
c.setTime(dd);
358
(num.equals(
"1"
))
// 返回星期一所在的日期
359
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
360
"2"
// 返回星期二所在的日期
361
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
362
"3"
// 返回星期三所在的日期
363
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
364
"4"
// 返回星期四所在的日期
365
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
366
"5"
// 返回星期五所在的日期
367
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
368
"6"
// 返回星期六所在的日期
369
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
370
// 返回星期日所在的日期
371
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
372
).format(c.getTime());
373
374
375
* 根据一个日期,返回是星期几的字符串
376
377
378
379
380
String getWeek(String sdate) {
381
382
Date date = VeDate.strToDate(sdate);
383
384
c.setTime(date);
385
// int hour=c.get(Calendar.DAY_OF_WEEK);
386
// hour中存的就是星期几了,其范围 1~7
387
// 1=星期日 7=星期六,其他类推
388
"EEEE"
389
390
String getWeekStr(String sdate){
391
String str =
392
str = VeDate.getWeek(sdate);
393
.equals(str)){
394
str =
"星期日"
395
396
"星期一"
397
398
"星期二"
399
"星期三"
401
402
"星期四"
403
404
"星期五"
405
"7"
406
"星期六"
407
408
409
410
411
* 两个时间之间的天数
412
413
414
415
416
417
getDays(String date1, String date2) {
418
(date1 ==
|| date1.equals(
419
420
(date2 ==
|| date2.equals(
421
422
// 转换为标准时间
423
424
java.util.Date date =
425
java.util.Date mydate =
426
427
date = myFormatter.parse(date1);
428
mydate = myFormatter.parse(date2);
429
430
431
432
day;
433
434
435
* 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间
436
* 此函数返回该日历第一行星期日所在的日期
437
438
439
440
441
String getNowMonth(String sdate) {
442
// 取该时间所在月的一号
443
sdate = sdate.substring(
) +
"01"
444
// 得到这个月的1号是星期几
445
446
447
448
u = c.get(Calendar.DAY_OF_WEEK);
449
String newday = VeDate.getNextDay(sdate, (
- u) +
450
newday;
451
452
453
* 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数
454
455
456
* 表示是取几位随机数,可以自己定
457
458
String getNo(
k) {
459
getUserDate(
"yyyyMMddhhmmss"
) + getRandom(k);
460
461
462
* 返回一个随机数
463
464
* @param i
465
466
467
String getRandom(
i) {
468
Random jjj =
Random();
469
// int suiJiShu = jjj.nextInt(9);
470
(i ==
471
472
String jj =
473
for
k =
; k < i; k++) {
474
jj = jj + jjj.nextInt(
475
476
jj;
477
478
479
480
* @param args
481
482
RightDate(String date) {
483
SimpleDateFormat sdf =
"yyyy-MM-dd hh:mm:ss"
484
485
(date ==
486
487
(date.length() >
488
sdf =
489
490
491
492
493
sdf.parse(date);
494
(ParseException pe) {
495
496
497
498
499
/***************************************************************************
500
* //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1
501
* 以年月日中文返回 2 以横线-返回 // 3 以斜线/返回 4 以缩写不带其它符号形式返回 // 5 以点号.返回
502
**************************************************************************/
503
String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) {
504
505
506
507
String s_nd = dateString.substring(
// 年份
508
String s_yf = dateString.substring(
// 月份
509
String s_rq = dateString.substring(
// 日期
510
String sreturn =
511
roc.util.MyChar mc =
roc.util.MyChar();
512
(sdate ==
|| sdate.equals(
) || !mc.Isdate(sdate)) {
// 处理空值情况
513
(nd.equals(
)) {
514
sreturn = s_nd;
515
// 处理间隔符
516
(format.equals(
517
sreturn = sreturn +
"年"
518
519
"-"
520
521
"/"
522
523
"."
524
525
// 处理月份
526
(yf.equals(
527
sreturn = sreturn + s_yf;
528
529
"月"
530
531
532
533
534
535
536
537
// 处理日期
538
(rq.equals(
539
sreturn = sreturn + s_rq;
540
541
"日"
542
543
544
// 不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式
545
sdate = roc.util.RocDate.getOKDate(sdate);
546
s_nd = sdate.substring(
547
s_yf = sdate.substring(
548
s_rq = sdate.substring(
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
sreturn;
581
582
String getNextMonthDay(String sdate,
m) {
583
sdate = getOKDate(sdate);
584
year = Integer.parseInt(sdate.substring(
));
585
month = Integer.parseInt(sdate.substring(
586
month = month + m;
587
(month <
588
month = month +
589
year = year -
590
(month >
591
month = month -
592
year = year +
593
594
String smonth =
595
596
smonth =
+ month;
597
598
599
year +
+ smonth +
"-10"
600
601
String getOKDate(String sdate) {
602
603
getStringDateShort();
604
(!VeStr.Isdate(sdate)) {
605
sdate = getStringDateShort();
606
607
// 将“/”转换为“-”
608
sdate = VeStr.Replace(sdate,
609
// 如果只有8位长度,则要进行转换
610
(sdate.length() ==
611
+ sdate.substring(
612
613
614
Date strtodate = formatter.parse(sdate, pos);
615
String dateString = formatter.format(strtodate);
616
617
618
void
main(String[] args)
throws
Exception {
619
620
//System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09")));
621
622
throw
Exception();
623
624
//System.out.println("sss");
625
626
posted on 2013-01-18 15:29 杨军威 阅读(256) 评论(0) 编辑 收藏
Powered by: BlogJava Copyright © 杨军威