java獲取Date時間的各種方式為大家分享如下
常用的時間獲取方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
public class DateUtils { /** * 獲取時間戳 * 輸出結果:1438692801766 */ @Test public void getTimeStamp() { Date date = new Date(); long times = date.getTime(); System.out.println(times); //第二種方法: new Date().getTime(); } /** * 獲取格式化的時間 * 輸出格式:2015-08-04 20:55:35 */ @Test public void getFormatDate(){ Date date = new Date(); long times = date.getTime(); //時間戳 SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(date); System.out.println(dateString); } /** * 將時間戳轉化為標準時間 * 輸出:Tue Oct 07 12:04:36 CST 2014 */ @Test public void timestampToDate(){ long times = 1412654676572L; Date date = new Date(times); System.out.println(date); } } |
其他的獲取時間的方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
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
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
|
package com.qunar.date; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.*; /** * Created by liugen.xu on 2015/8/4. */ public class DateGenerate { /** * 獲取現在時間 * * @return 返回時間類型 yyyy-MM-dd HH:mm:ss */ public static Date getNowDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(currentTime); ParsePosition pos = new ParsePosition( 8 ); Date currentTime_2 = formatter.parse(dateString, pos); return currentTime_2; } /** * 獲取現在時間 * * @return返回短時間格式 yyyy-MM-dd */ public static Date getNowDateShort() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); String dateString = formatter.format(currentTime); ParsePosition pos = new ParsePosition( 8 ); Date currentTime_2 = formatter.parse(dateString, pos); return currentTime_2; } /** * 獲取現在時間 * * @return返回字符串格式 yyyy-MM-dd HH:mm:ss */ public static String getStringDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(currentTime); return dateString; } /** * 獲取現在時間 * * @return 返回短時間字符串格式yyyy-MM-dd */ public static String getStringDateShort() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); String dateString = formatter.format(currentTime); return dateString; } /** * 獲取時間 小時:分;秒 HH:mm:ss * * @return */ public static String getTimeShort() { SimpleDateFormat formatter = new SimpleDateFormat( "HH:mm:ss" ); Date currentTime = new Date(); String dateString = formatter.format(currentTime); return dateString; } /** * 將長時間格式字符串轉換為時間 yyyy-MM-dd HH:mm:ss * * @param strDate * @return */ public static Date strToDateLong(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); ParsePosition pos = new ParsePosition( 0 ); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 將長時間格式時間轉換為字符串 yyyy-MM-dd HH:mm:ss * * @param dateDate * @return */ public static String dateToStrLong(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(dateDate); return dateString; } /** * 將短時間格式時間轉換為字符串 yyyy-MM-dd * * @param dateDate * @return */ public static String dateToStr(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); String dateString = formatter.format(dateDate); return dateString; } /** * 將短時間格式字符串轉換為時間 yyyy-MM-dd * * @param strDate * @return */ public static Date strToDate(String strDate) { SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); ParsePosition pos = new ParsePosition( 0 ); Date strtodate = formatter.parse(strDate, pos); return strtodate; } /** * 得到現在時間 * * @return */ public static Date getNow() { Date currentTime = new Date(); return currentTime; } /** * 提取一個月中的最后一天 * * @param day * @return */ public static Date getLastDate( long day) { Date date = new Date(); long date_3_hm = date.getTime() - 3600000 * 34 * day; Date date_3_hm_date = new Date(date_3_hm); return date_3_hm_date; } /** * 得到現在時間 * * @return 字符串 yyyyMMdd HHmmss */ public static String getStringToday() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd HHmmss" ); String dateString = formatter.format(currentTime); return dateString; } /** * 得到現在小時 */ public static String getHour() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(currentTime); String hour; hour = dateString.substring( 11 , 13 ); return hour; } /** * 得到現在分鐘 * * @return */ public static String getTime() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = formatter.format(currentTime); String min; min = dateString.substring( 14 , 16 ); return min; } /** * 根據用戶傳入的時間表示格式,返回當前時間的格式 如果是yyyyMMdd,注意字母y不能大寫。 * * @param sformat yyyyMMddhhmmss * @return */ public static String getUserDate(String sformat) { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat(sformat); String dateString = formatter.format(currentTime); return dateString; } /** * 二個小時時間間的差值,必須保證二個時間都是"HH:MM"的格式,返回字符型的分鐘 */ public static String getTwoHour(String st1, String st2) { String[] kk = null ; String[] jj = null ; kk = st1.split( ":" ); jj = st2.split( ":" ); if (Integer.parseInt(kk[ 0 ]) < Integer.parseInt(jj[ 0 ])) return "0" ; else { double y = Double.parseDouble(kk[ 0 ]) + Double.parseDouble(kk[ 1 ]) / 60 ; double u = Double.parseDouble(jj[ 0 ]) + Double.parseDouble(jj[ 1 ]) / 60 ; if ((y - u) > 0 ) return y - u + "" ; else return "0" ; } } /** * 得到二個日期間的間隔天數 */ public static String getTwoDay(String sj1, String sj2) { SimpleDateFormat myFormatter = new SimpleDateFormat( "yyyy-MM-dd" ); long day = 0 ; try { java.util.Date date = myFormatter.parse(sj1); java.util.Date mydate = myFormatter.parse(sj2); day = (date.getTime() - mydate.getTime()) / ( 24 * 60 * 60 * 1000 ); } catch (Exception e) { return "" ; } return day + "" ; } /** * 時間前推或后推分鐘,其中JJ表示分鐘. */ public static String getPreTime(String sj1, String jj) { SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String mydate1 = "" ; try { Date date1 = format.parse(sj1); long Time = (date1.getTime() / 1000 ) + Integer.parseInt(jj) * 60 ; date1.setTime(Time * 1000 ); mydate1 = format.format(date1); } catch (Exception e) { } return mydate1; } /** * 得到一個時間延后或前移幾天的時間,nowdate為時間,delay為前移或后延的天數 */ public static String getNextDay(String nowdate, String delay) { try { SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd" ); String mdate = "" ; Date d = strToDate(nowdate); long myTime = (d.getTime() / 1000 ) + Integer.parseInt(delay) * 24 * 60 * 60 ; d.setTime(myTime * 1000 ); mdate = format.format(d); return mdate; } catch (Exception e) { return "" ; } } /** * 判斷是否潤年 * * @param ddate * @return */ public static boolean isLeapYear(String ddate) { /** * 詳細設計: 1.被400整除是閏年,否則: 2.不能被4整除則不是閏年 3.能被4整除同時不能被100整除則是閏年 * 3.能被4整除同時能被100整除則不是閏年 */ Date d = strToDate(ddate); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(d); int year = gc.get(Calendar.YEAR); if ((year % 400 ) == 0 ) return true ; else if ((year % 4 ) == 0 ) { if ((year % 100 ) == 0 ) return false ; else return true ; } else return false ; } /** * 返回美國時間格式 26 Apr 2006 * * @param str * @return */ public static String getEDate(String str) { SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); ParsePosition pos = new ParsePosition( 0 ); Date strtodate = formatter.parse(str, pos); String j = strtodate.toString(); String[] k = j.split( " " ); return k[ 2 ] + k[ 1 ].toUpperCase() + k[ 5 ].substring( 2 , 4 ); } /** * 獲取一個月的最后一天 * * @param dat * @return */ public static String getEndDateOfMonth(String dat) { // yyyy-MM-dd String str = dat.substring( 0 , 8 ); String month = dat.substring( 5 , 7 ); int mon = Integer.parseInt(month); if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12 ) { str += "31" ; } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11 ) { str += "30" ; } else { if (isLeapYear(dat)) { str += "29" ; } else { str += "28" ; } } return str; } /** * 判斷二個時間是否在同一個周 * * @param date1 * @param date2 * @return */ public static boolean isSameWeekDates(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(date1); cal2.setTime(date2); int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); if ( 0 == subYear) { if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true ; } else if ( 1 == subYear && 11 == cal2.get(Calendar.MONTH)) { // 如果12月的最后一周橫跨來年第一周的話則最后一周即算做來年的第一周 if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true ; } else if (- 1 == subYear && 11 == cal1.get(Calendar.MONTH)) { if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true ; } return false ; } /** * 產生周序列,即得到當前時間所在的年度是第幾周 * * @return */ public static String getSeqWeek() { Calendar c = Calendar.getInstance(Locale.CHINA); String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR)); if (week.length() == 1 ) week = "0" + week; String year = Integer.toString(c.get(Calendar.YEAR)); return year + week; } /** * 獲得一個日期所在的周的星期幾的日期,如要找出2002年2月3日所在周的星期一是幾號 * * @param sdate * @param num * @return */ public static String getWeek(String sdate, String num) { // 再轉換為時間 Date dd = DateGenerate.strToDate(sdate); Calendar c = Calendar.getInstance(); c.setTime(dd); if (num.equals( "1" )) // 返回星期一所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); else if (num.equals( "2" )) // 返回星期二所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); else if (num.equals( "3" )) // 返回星期三所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); else if (num.equals( "4" )) // 返回星期四所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); else if (num.equals( "5" )) // 返回星期五所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); else if (num.equals( "6" )) // 返回星期六所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); else if (num.equals( "0" )) // 返回星期日所在的日期 c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); return new SimpleDateFormat( "yyyy-MM-dd" ).format(c.getTime()); } /** * 根據一個日期,返回是星期幾的字符串 * * @param sdate * @return */ public static String getWeek(String sdate) { // 再轉換為時間 Date date = DateGenerate.strToDate(sdate); Calendar c = Calendar.getInstance(); c.setTime(date); // int hour=c.get(Calendar.DAY_OF_WEEK); // hour中存的就是星期幾了,其范圍 1~7 // 1=星期日 7=星期六,其他類推 return new SimpleDateFormat( "EEEE" ).format(c.getTime()); } public static String getWeekStr(String sdate) { String str = "" ; str = DateGenerate.getWeek(sdate); if ( "1" .equals(str)) { str = "星期日" ; } else if ( "2" .equals(str)) { str = "星期一" ; } else if ( "3" .equals(str)) { str = "星期二" ; } else if ( "4" .equals(str)) { str = "星期三" ; } else if ( "5" .equals(str)) { str = "星期四" ; } else if ( "6" .equals(str)) { str = "星期五" ; } else if ( "7" .equals(str)) { str = "星期六" ; } return str; } /** * 兩個時間之間的天數 * * @param date1 * @param date2 * @return */ public static long getDays(String date1, String date2) { if (date1 == null || date1.equals( "" )) return 0 ; if (date2 == null || date2.equals( "" )) return 0 ; // 轉換為標準時間 SimpleDateFormat myFormatter = new SimpleDateFormat( "yyyy-MM-dd" ); java.util.Date date = null ; java.util.Date mydate = null ; try { date = myFormatter.parse(date1); mydate = myFormatter.parse(date2); } catch (Exception e) { } long day = (date.getTime() - mydate.getTime()) / ( 24 * 60 * 60 * 1000 ); return day; } /** * 形成如下的日歷 , 根據傳入的一個時間返回一個結構 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是當月的各個時間 * 此函數返回該日歷第一行星期日所在的日期 * * @param sdate * @return */ public static String getNowMonth(String sdate) { // 取該時間所在月的一號 sdate = sdate.substring( 0 , 8 ) + "01" ; // 得到這個月的1號是星期幾 Date date = DateGenerate.strToDate(sdate); Calendar c = Calendar.getInstance(); c.setTime(date); int u = c.get(Calendar.DAY_OF_WEEK); String newday = DateGenerate.getNextDay(sdate, ( 1 - u) + "" ); return newday; } /** * 取得數據庫主鍵 生成格式為yyyymmddhhmmss+k位隨機數 * * @param k 表示是取幾位隨機數,可以自己定 */ public static String getNo( int k) { return getUserDate( "yyyyMMddhhmmss" ) + getRandom(k); } /** * 返回一個隨機數 * * @param i * @return */ public static String getRandom( int i) { Random jjj = new Random(); // int suiJiShu = jjj.nextInt(9); if (i == 0 ) return "" ; String jj = "" ; for ( int k = 0 ; k < i; k++) { jj = jj + jjj.nextInt( 9 ); } return jj; } /** */ public static boolean RightDate(String date) { SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss" ); ; if (date == null ) return false ; if (date.length() > 10 ) { sdf = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss" ); } else { sdf = new SimpleDateFormat( "yyyy-MM-dd" ); } try { sdf.parse(date); } catch (ParseException pe) { return false ; } return true ; } /** * ************************************************************************ * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1 * 以年月日中文返回 2 以橫線-返回 // 3 以斜線/返回 4 以縮寫不帶其它符號形式返回 // 5 以點號.返回 * ************************************************************************ */ public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); String dateString = formatter.format(currentTime); String s_nd = dateString.substring( 0 , 4 ); // 年份 String s_yf = dateString.substring( 5 , 7 ); // 月份 String s_rq = dateString.substring( 8 , 10 ); // 日期 String sreturn = "" ; roc.util.MyChar mc = new roc.util.MyChar(); if (sdate == null || sdate.equals( "" ) || !mc.Isdate(sdate)) { // 處理空值情況 if (nd.equals( "1" )) { sreturn = s_nd; // 處理間隔符 if (format.equals( "1" )) sreturn = sreturn + "年" ; else if (format.equals( "2" )) sreturn = sreturn + "-" ; else if (format.equals( "3" )) sreturn = sreturn + "/" ; else if (format.equals( "5" )) sreturn = sreturn + "." ; } // 處理月份 if (yf.equals( "1" )) { sreturn = sreturn + s_yf; if (format.equals( "1" )) sreturn = sreturn + "月" ; else if (format.equals( "2" )) sreturn = sreturn + "-" ; else if (format.equals( "3" )) sreturn = sreturn + "/" ; else if (format.equals( "5" )) sreturn = sreturn + "." ; } // 處理日期 if (rq.equals( "1" )) { sreturn = sreturn + s_rq; if (format.equals( "1" )) sreturn = sreturn + "日" ; } } else { // 不是空值,也是一個合法的日期值,則先將其轉換為標準的時間格式 sdate = roc.util.RocDate.getOKDate(sdate); s_nd = sdate.substring( 0 , 4 ); // 年份 s_yf = sdate.substring( 5 , 7 ); // 月份 s_rq = sdate.substring( 8 , 10 ); // 日期 if (nd.equals( "1" )) { sreturn = s_nd; // 處理間隔符 if (format.equals( "1" )) sreturn = sreturn + "年" ; else if (format.equals( "2" )) sreturn = sreturn + "-" ; else if (format.equals( "3" )) sreturn = sreturn + "/" ; else if (format.equals( "5" )) sreturn = sreturn + "." ; } // 處理月份 if (yf.equals( "1" )) { sreturn = sreturn + s_yf; if (format.equals( "1" )) sreturn = sreturn + "月" ; else if (format.equals( "2" )) sreturn = sreturn + "-" ; else if (format.equals( "3" )) sreturn = sreturn + "/" ; else if (format.equals( "5" )) sreturn = sreturn + "." ; } // 處理日期 if (rq.equals( "1" )) { sreturn = sreturn + s_rq; if (format.equals( "1" )) sreturn = sreturn + "日" ; } } return sreturn; } public static String getNextMonthDay(String sdate, int m) { sdate = getOKDate(sdate); int year = Integer.parseInt(sdate.substring( 0 , 4 )); int month = Integer.parseInt(sdate.substring( 5 , 7 )); month = month + m; if (month < 0 ) { month = month + 12 ; year = year - 1 ; } else if (month > 12 ) { month = month - 12 ; year = year + 1 ; } String smonth = "" ; if (month < 10 ) smonth = "0" + month; else smonth = "" + month; return year + "-" + smonth + "-10" ; } public static String getOKDate(String sdate) { if (sdate == null || sdate.equals( "" )) return getStringDateShort(); if (!VeStr.Isdate(sdate)) { sdate = getStringDateShort(); } // 將“/”轉換為“-” sdate = VeStr.Replace(sdate, "/" , "-" ); // 如果只有8位長度,則要進行轉換 if (sdate.length() == 8 ) sdate = sdate.substring( 0 , 4 ) + "-" + sdate.substring( 4 , 6 ) + "-" + sdate.substring( 6 , 8 ); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd" ); ParsePosition pos = new ParsePosition( 0 ); Date strtodate = formatter.parse(sdate, pos); String dateString = formatter.format(strtodate); return dateString; } public static void main(String[] args) throws Exception { try { //System.out.print(Integer.valueOf(getTwoDay("2006-11-03 12:22:10", "2006-11-02 11:22:09"))); } catch (Exception e) { throw new Exception(); } //System.out.println("sss"); } } |
小編對java獲取Date時間的方式有了基本的掌握,你吶?