服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - java日期时间操作工具类

java日期时间操作工具类

2021-06-22 13:24一掬净土 Java教程

这篇文章主要为大家详细介绍了java日期时间操作工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java日期时间操作工具类,供大家参考,具体内容如下

虽然jdk1.8开始,加入了time包,里面对时区,本地化时间,格式化,以及时间等做了很好的封装,但仍然要写一个工具类。大家看着用。应该没有bug。如果发现了,请您一定告知,互相学习!好了,上代码:

?
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
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
package com.wdy.tools.utils.timeutil;
 
import java.text.dateformat;
import java.text.simpledateformat;
import java.util.calendar;
import java.util.date;
import java.util.gregoriancalendar;
 
 /**
 * timeutil 日期时间工具类
 * @author wangdy
 */
public class timeutil {
 
 /**
 * 获取当前系统时间的小时(hh)
 *
 * @return int 当前系统小时hh格式
 * @throws exception
 */
 public static int gethh() throws exception {
 dateformat df = new simpledateformat("hh");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return integer.parseint(str);
 }
 
 /**
 * 获取当前系统时间的分钟数(mm)
 *
 * @return int 当前系统分钟mm格式
 * @throws exception
 */
 public static int getmm() throws exception {
 dateformat df = new simpledateformat("mm");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 // return integer.parseint(str.split(":")[0]) * 4 +
 // integer.parseint(str.split(":")[1]) / 15;
 return integer.parseint(str);
 }
 
 /**
 * 获取当前系统时间的秒数(ss)
 *
 * @return int 当前系统时间的秒数(ss)
 * @throws exception
 */
 public static int getss() throws exception {
 dateformat df = new simpledateformat("ss");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 // return integer.parseint(str.split(":")[0]) * 4 +
 // integer.parseint(str.split(":")[1]) / 15;
 return integer.parseint(str);
 }
 
 /**
 * 获取输入日期的前后日期
 *
 * @param date
 *      基准日期 yyyy-mm-dd
 * @param daymark
 *      +代表往后,-代表往前
 * @return string 前后日期(yyyy-mm-dd)
 * @throws exception
 */
 public static string getotherday(string date, int daymark) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.day_of_month, daymark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在周的第一天(周一)
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @return string 周一(yyyy-mm-dd)
 * @throws exception
 *
 * */
 public static string getweekfirstdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int days = c.get(calendar.day_of_week);
 string strstart = "";
 if (days == 1) {
  strstart = getotherday(date, -days - 5);
 } else {
  strstart = getotherday(date, -days + 2);
 }
 return strstart;
 }
 
 /**
 * 获取日期所在周的最后一天(周日)
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @return string(yyyy-mm-dd)
 * @throws exception
 *
 * */
 public static string getweeklastdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int days = c.get(calendar.day_of_week);
 string strstart = "";
 if (days == 1) {
  strstart = getotherday(date, 0);
 } else {
  strstart = getotherday(date, 8 - days);
 }
 return strstart;
 }
 
 /**
 * 获取日期所在周(年的周数)的前后周的周一
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @param weekmark找基准日期
 *      +代表往后,-代表往前
 * @return string 前后周的周一(yyyy-mm-dd)
 * @throws exception
 *
 * */
 public static string getotherweekfirstdate(string date, int weekmark)
  throws exception {
 string firstdate = getweekfirstdate(date);
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(firstdate);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.week_of_year, weekmark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在季的第一天
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @return string
 * @throws exception
 *
 * */
 public static string getseasonfirstdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int year = c.get(calendar.year);
 int month = c.get(calendar.month);
 if (month < 3) {
  month = 0;
 } else if (month >= 3 && month < 6) {
  month = 3;
 } else if (month >= 6 && month < 9) {
  month = 6;
 } else if (month >= 9 && month < 12) {
  month = 9;
 }
 c.set(year, month, 1);
 
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在季的前后季度的第一天(xxxx-xx-01)
 *
 * @param date
 *      基准日期yyyy-mm-dd
 * @param seasonmark
 *      找基准日期+代表往后,-代表往前
 * @return string
 * @throws exception
 *
 * */
 public static string getotherseasonfirstdate(string date, int seasonmark)
  throws exception {
 string firstdate = getseasonfirstdate(date);
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(firstdate);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int month = seasonmark * 3;
 if (month != 0) {
  c.add(calendar.month, month);
 }
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在月的第一天 date基准日期
 *
 * @param date
 *      yyyy-mm-dd
 * @return string (yyyy-mm)
 * @throws exception
 *
 * */
 public static string getmonthfirstdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int year = c.get(calendar.year);
 int month = c.get(calendar.month);
 c.set(year, month, 1);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在月的最后一天
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @return string yyyy-mm-dd
 * @throws exception
 *
 * */
 public static string getmonthlastdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int year = c.get(calendar.year);
 int month = c.get(calendar.month);
 int daynum = c.getactualmaximum(calendar.day_of_month);
 c.set(year, month, daynum);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在月的前后月份的第一天(yyyy-mm-01)
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @param monthmark找基准日期
 *      +代表往后,-代表往前
 * @return string
 * @throws exception
 *
 * */
 public static string getothermonthfirstdate(string date, int monthmark)
  throws exception {
 string firstdate = getmonthfirstdate(date);
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(firstdate);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.month, monthmark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在年的第一天
 *
 * @param date基准日期yyyy
 *      -mm-dd
 * @return string
 * @throws exception
 *
 * */
 public static string getyearfirstdate(string date) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 int year = c.get(calendar.year);
 c.set(year, 0, 1);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 10);
 return strstart;
 }
 
 /**
 * 获取日期所在年的前后年的第一天(yyyy-01-01)
 *
 * @param date
 *      基准日期yyyy-mm-dd
 * @param monthmark
 *      找基准日期+代表往后,-代表往前
 * @return string
 * @throws exception
 *
 * */
 public static string getotheryearfirstdate(string date, int yearmark)
  throws exception {
 string firstdate = getmonthfirstdate(date);
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(firstdate);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.year, yearmark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime.substring(0, 4);
 return strstart + "-01-01";
 }
 
 /**
 * 取得同期日期 年同期
 *
 * @param date
 *      yyyy-mm-dd
 * @param year
 *      年份
 * @return 年同期日期yyyy-mm-dd
 * @throws exception
 */
 public static string getyeartqday(string date, int year) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.year, year);
 string mdatetime = df.format(c.gettime());
 return mdatetime;
 }
 
 /**
 * 取得同期日期 月同期
 *
 * @param date
 *      yyyy-mm-dd
 * @param month
 *      月份
 * @return 月同期日期yyyy-mm-dd
 * @throws exception
 */
 public static string getmonthtqday(string date, int month) throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.month, month);
 string mdatetime = df.format(c.gettime());
 return mdatetime;
 }
 
 /**
 * 取得同比月份
 *
 * @param month
 *      月份
 * @return 同比月份
 * @throws exception
 */
 public static string gettbmonth(string month) throws exception {
 dateformat df = new simpledateformat("yyyy-mm");
 date dt = df.parse(month);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.year, -1);
 string mdatetime = df.format(c.gettime());
 return mdatetime;
 }
 
 /**
 * 取得环比月份
 *
 * @param month
 *      月份
 * @return 环比月份
 * @throws exception
 */
 public static string gethbmonth(string month) throws exception {
 dateformat df = new simpledateformat("yyyy-mm");
 date dt = df.parse(month);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.month, -1);
 string mdatetime = df.format(c.gettime());
 return mdatetime;
 }
 
 /**
 * 获取两个日期之间的天数
 *
 * @param sdate
 *      -- 起始日期yyyy-mm-dd
 * @param edate
 *      -- 结束日期yyyy-mm-dd
 * @return int--天数
 * @throws exception
 * */
 public static int getdaysoftwodate(string sdate, string edate)
  throws exception {
 
 dateformat df1 = new simpledateformat("yyyy-mm-dd");
 dateformat df2 = new simpledateformat("yyyy-mm-dd");
 date date1 = df1.parse(sdate);
 date date2 = df2.parse(edate);
 if (null == date1 || null == date2) {
  return -1;
 }
 long intervalmilli = date2.gettime() - date1.gettime();
 return (int) (intervalmilli / (24 * 60 * 60 * 1000));
 }
 
 /**
 * 获取两个月份之间的月数
 *
 * @param sdate
 *      -- 起始月yyyy-mm
 * @param edate
 *      -- 结束月yyyy-mm
 * @return int--天数
 * @throws exception
 * */
 public static int getmonthoftwomonth(string sdate, string edate)
  throws exception {
 
 dateformat df = new simpledateformat("yyyy-mm");
 
 date date1 = df.parse(sdate);
 date date2 = df.parse(edate);
 if (null == date1 || null == date2) {
  return -1;
 }
 
 calendar c1 = calendar.getinstance();
 c1.settime(date1);
 calendar c2 = calendar.getinstance();
 c2.settime(date2);
 
 int month1 = c1.get(calendar.year) * 12 + c1.get(calendar.month);
 int month2 = c2.get(calendar.year) * 12 + c2.get(calendar.month);
 
 return month2 - month1;
 }
 
 /**比较两个日期
 * @param sdate 起始日期
 * @param edate 结束日期
 * @param pattern 日期格式
 * @return boolean 返回比较结果
 * @throws exception
 */
 public static boolean comparedate(string sdate, string edate, string pattern)
  throws exception {
 
 dateformat df1 = new simpledateformat(pattern);
 date date1 = df1.parse(sdate);
 date date2 = df1.parse(edate);
 if (null == date1 || null == date2) {
  return false;
 }
 long intervalmilli = date2.gettime() - date1.gettime();
 if (intervalmilli > 0) {
  return true;
 }
 return false;
 }
 
 /**获取两个日期之间的分钟数
 * @param sdate 起始日期 yyyy-mm-dd hh:mm:ss
 * @param edate 结束日期 yyyy-mm-dd hh:mm:ss
 * @return int--分钟数
 * @throws exception
 */
 public static int getminsoftwodate(string sdate, string edate)
  throws exception {
 
 dateformat df1 = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 dateformat df2 = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 date date1 = df1.parse(sdate);
 date date2 = df2.parse(edate);
 if (null == date1 || null == date2) {
  return -1;
 }
 long intervalmilli = date2.gettime() - date1.gettime();
 return (int) (intervalmilli / (60 * 1000));
 }
 
 /**
 * 获取当前系统时间的字符串
 *
 * @return string -- 当天的整个日期字符串,年月日时分秒,返回格式yyyy-mm-dd hh:mm:ss
 * @throws exception
 * */
 public static string gettodayallstr() throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**
 * 获取当前系统日期的字符串
 *
 * @return string-- 当天的年月日字符串,返回格式 yyyy-mm-dd
 * @throws exception
 * */
 public static string gettodaydatestr() throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**
 * 获取当前系统日期的字符串
 *
 * @return string -- 当天的年月日字符串,返回格式 yyyymmdd
 * */
 public static string gettodayymd() throws exception {
 dateformat df = new simpledateformat("yyyymmdd");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**获取当前系统时间的指定类型字符串
 * @param pattern 指定的格式
 * @return string-- 当天的指定类型的字符串
 * @throws exception
 */
 public static string gettodaystrbypattern(string pattern) throws exception {
 dateformat df = new simpledateformat(pattern);
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**
 * 获取当前系统时间的字符串
 *
 * @return string 当天的时分秒字符串,返回格式hh:mm:ss
 * */
 public static string gettodayhmsstr() throws exception {
 dateformat df = new simpledateformat("hh:mm:ss");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**
 * 获取当前系统时间的字符串
 *
 * @return string -- 当天的时分秒字符串,返回格式hhmmss
 * */
 public static string gettodayhms() throws exception {
 dateformat df = new simpledateformat("hhmmss");
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**获取当前系统指定格式的时间的字符串
 * @param pattern 指定格式
 * @return string 当前系统指定格式时间字符串
 * @throws exception
 */
 public static string gettodayhmsbypattern(string pattern) throws exception {
 dateformat df = new simpledateformat(pattern);
 date date = new date(system.currenttimemillis());
 string str = df.format(date);
 return str;
 }
 
 /**
 * 获取指定日期的时刻字符串
 *
 * @param daystr
 *      (yyyy-mm-dd hh:mm:ss)
 * @return string -- 当天的时分秒字符串,返回格式:hhmmss
 * */
 public static string gethmsstrfordatetime(string daystr) throws exception {
 dateformat df = new simpledateformat("hhmmss");
 dateformat df2 = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 string str = df.format(df2.parse(daystr));
 return str;
 }
 
 /**
 * 日期格式转换 oldpattern 转成 newpattern
 *
 * @param str 要转换格式的日期字符串
 * @param oldpattern 原有格式
 * @param newpattern 目标格式
 * @return string转换格式化后的字符串
 * @throws exception
 */
 public static string changedatetype(string str, string oldpattern, string newpattern) throws exception {
 dateformat df = new simpledateformat(oldpattern);
 dateformat df1 = new simpledateformat(newpattern);
 return df1.format(df.parse(str));
 }
 
 
 /**
 * 获取输入日期的前后几小时的日期时间
 *
 * @param date基准日期yyyy-mm-dd hh:mm:ss
 * @param daymark找基准日期
 *      +代表往后,-代表往前
 * @return
 * @throws exception
 *
 * */
 public static string getotherhour(string date, int daymark)
  throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.hour_of_day, daymark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime;
 return strstart;
 }
 
 /**
 * 获取前后分钟数
 *
 * @param date yyyy-mm-dd hh:mm:ss
 * @param minutemark 前后标识+-数值
 * @return 返回
 * @throws exception
 */
 public static string getotherminute(string date, int minutemark)
  throws exception {
 dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss");
 date dt = df.parse(date);
 calendar c = calendar.getinstance();
 c.settime(dt);
 c.add(calendar.minute, minutemark);
 string mdatetime = df.format(c.gettime());
 string strstart = mdatetime;
 return strstart;
 }
 
 
 /**
 * 解析字符串为date类型
 * @param date 要被解析的日期字符串
 * @param pattern 类型格式,默认yyyy-mm-dd hh:mm:ss
 * @return date 被解析后的日期
 * @throws exception
 */
 public static date parsedate(string date, string pattern) throws exception {
 date returndate = null;
 if (pattern == null || pattern.equals("") || pattern.equals("null")) {
  pattern = "yyyy-mm-dd hh:mm:ss";
 }
 java.text.simpledateformat sdf = new java.text.simpledateformat(pattern);
 try {
  returndate = sdf.parse(date);
 } catch (exception e) {
  e.printstacktrace();
 }
 return returndate;
 }
 
 /**
 * 格式化date类型日期
 * @param date date类型日期
 * @param pattern 类型格式
 * @return string,被格式化后的日期
 * @throws exception
 */
 public static string formatdate(date date, string pattern) throws exception {
 string returndate = null;
 
 if (date == null) {
  return "";
 }
 
 if (pattern == null || pattern.equals("") || pattern.equals("null")) {
  pattern = "yyyy-mm-dd hh:mm:ss";
 }
 
 java.text.simpledateformat sdf = new java.text.simpledateformat(pattern);
 returndate = sdf.format(date);
 
 return returndate;
 }
 
 /**
 * 得到当前月份yyyy-mm;
 *
 * @return string
 */
 public static string getsystemmonth() {
 java.util.date date = new java.util.date();
 simpledateformat formatter = new simpledateformat("yyyy-mm");
 string mdatetime1 = formatter.format(date);
 return mdatetime1;
 }
 
 /**
 * 获取月所在年的最后一个月
 * @param month 月份
 * @param m
 * @return
 * @throws exception
 */
 public static string getyearlastmonth(string month, int m) throws exception {
 simpledateformat format = new simpledateformat("yyyy-mm");
 
 date newdate = new date();
 newdate = format.parse(month);
 calendar c = calendar.getinstance();
 c.settime(newdate);
 c.add(calendar.year, m);
 
 newdate.settime(c.gettimeinmillis());
 
 return format.format(newdate).substring(0, 4) + "-12";
 }
 
 /**
 * 获取前后月份
 * + 往后推迟m月
 *
 * @param month
 * @param m
 * @return
 * @throws exception
 */
 public static string getothermonth(string month, int m) throws exception {
 simpledateformat format = new simpledateformat("yyyy-mm");
 
 date newdate = new date();
 newdate = format.parse(month);
 calendar c = calendar.getinstance();
 c.settime(newdate);
 c.add(calendar.month, m);
 
 newdate.settime(c.gettimeinmillis());
 
 return format.format(newdate);
 }
 
 /**
 * 获取前后月份+ 往后推迟m月
 *
 * @param month
 * @param m
 * @return
 * @throws exception
 */
 public static string getothermonthymd(string month, int m) throws exception {
 simpledateformat format = new simpledateformat("yyyy-mm-dd");
 
 date newdate = new date();
 newdate = format.parse(month);
 calendar c = calendar.getinstance();
 c.settime(newdate);
 c.add(calendar.month, m);
 
 newdate.settime(c.gettimeinmillis());
 
 return format.format(newdate);
 }
 
 /**
 * 根据年月字符串得到那个月的总天数
 * @param monthstr yyyy-mm
 * @return int 总天数
 * @throws exception
 */
 public static int getdaysofmonth(string monthstr) throws exception {
 
 simpledateformat format = new simpledateformat("yyyy-mm");
 date date = format.parse(monthstr);
 calendar calendar = new gregoriancalendar();
 calendar.settime(date);
 int daynum = calendar.getactualmaximum(calendar.day_of_month);
 return daynum;
 }
 
 /**
 * 获取指定时刻前后指定步长的时刻
 *
 * @param time
 *      时刻hh:mm:ss
 * @param m
 *      步长(+-m) 0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻
 * @return string hh:mm:ss
 * @throws exception
 */
 public static string getbeforeaftertimeformin(string time, int m)
  throws exception {
 calendar now = calendar.getinstance();
 simpledateformat format = new simpledateformat("hh:mm:ss");
 date newdate = new date();
 newdate = format.parse(time);
 now.settime(newdate);
 now.add(calendar.minute, m);
 return format.format(now.gettime());
 }
 
 /**
 * 获取指定格式的前后时间
 *
 * @param time
 * @param m
 *      (0:输出原来的时刻,+1输出后一个时刻,-1输出前一个时刻)
 * @param pattern
 *      类型的格式必须被time的格式所包含
 * @return
 * @throws exception
 */
 public static string getbeforeafterdatetimebytime(string time, int m,
  string pattern) throws exception {
 calendar now = calendar.getinstance();
 simpledateformat sdf = new simpledateformat(pattern);
 
 date newdate = new date();
 newdate = sdf.parse(time);
 now.settime(newdate);
 now.add(calendar.minute, m);
 
 return sdf.format(now.gettime());
 }
 
}

这就是整个工具类了,供君参考。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/wdy_2099/article/details/72983397

延伸 · 阅读

精彩推荐