DateUtils 學習記錄1


開發過程中很多時候都需要處理各種各樣的日期..有些項目可能還會有自己的DateUtil....

其實apache commons lang3有一個很好用的日期處理工具類,叫DateUtils...

基本上用他可以解決大部分的時間處理...

我下面列舉一些我經常碰到的一些問題的解決辦法與可能會遇到的一些日期問題解決辦法...

不做過多的解釋了,畢竟寫了不少注釋. (笑)

  1 package jiang;
  2 
  3 import java.text.SimpleDateFormat;
  4 import java.util.Calendar;
  5 import java.util.Date;
  6 import java.util.Iterator;
  7 
  8 import org.apache.commons.lang3.time.DateUtils;
  9 
 10 public class DateUtilsTest {
 11     public static void main(String[] args) {
 12         new DateUtilsTest();
 13     }
 14 
 15     public DateUtilsTest() {
 16         // 當前時間是大約是2016.1.21 9:36 am,每個test輸出可能會查幾秒到幾分鍾,因為例子不是一下子寫完的
 17         test1();
 18         test2();
 19         test3();
 20         test4();
 21         test5();
 22         test6();
 23         test7();
 24         test8();
 25         test9();
 26         test10();
 27         test11();
 28         test12();
 29     }
 30 
 31     public void printFormatDate(Date d) {
 32         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 33         System.out.println(df.format(d));
 34     }
 35 
 36     public void test1() {// 下個月第一天
 37         Date d = new Date();
 38         d = DateUtils.ceiling(d, Calendar.MONTH);// 進位月份
 39         printFormatDate(d);// 2016-02-01 00:00:00
 40     }
 41 
 42     public void test2() {// 下個月第一天
 43         Date d = new Date();
 44         d = DateUtils.addMonths(d, 1);// 月+1
 45         d = DateUtils.setDays(d, 1);// 設置日為1號
 46         d = DateUtils.truncate(d, Calendar.DATE);// 過濾時分秒
 47         printFormatDate(d);// 2016-02-01 00:00:00
 48     }
 49 
 50     public void test3() {// 當月最后一天最后一秒
 51         Date d = new Date();
 52         d = DateUtils.ceiling(d, Calendar.MONTH);// 進位月份
 53         d = DateUtils.addMilliseconds(d, -1);// 減少1秒
 54         printFormatDate(d);// 2016-01-31 23:59:59
 55     }
 56 
 57     public void test4() {// 當月第一天第一秒
 58         Date d = new Date();
 59         d = DateUtils.truncate(d, Calendar.MONTH);// 截取時間到月份
 60         printFormatDate(d);// 2016-01-01 00:00:00
 61     }
 62 
 63     public void test5() {// 下個月的這個時候
 64         Date d = new Date();
 65         d = DateUtils.addMonths(d, 1);
 66         printFormatDate(d);// 2016-02-21 09:46:02
 67     }
 68 
 69     public void test6() {// 昨天的這個時候
 70         Date d = new Date();
 71         d = DateUtils.addDays(d, -1);// 增加1月,如果下個月沒有這1天,那就不加
 72         printFormatDate(d);// 2016-01-20 09:46:48
 73     }
 74 
 75     public void test7() {// addMonth的注意點:2月沒有29號
 76         Date d = new Date();
 77         d = DateUtils.setDays(d, 29);
 78         d = DateUtils.addMonths(d, 1);// 並沒有增加
 79         printFormatDate(d);// 2016-01-29 09:47:45
 80     }
 81 
 82     public void test8() {// 這個月15號
 83         Date d = new Date();
 84         d = DateUtils.setDays(d, 15);
 85         d = DateUtils.truncate(d, Calendar.DATE);// 截取時間到日
 86         printFormatDate(d);// 2016-01-15 00:00:00
 87     }
 88 
 89     public void test9() {// 輸出包含今天的這個星期的每一天,星期第一天是周日
 90         Date d = new Date();
 91         Iterator<Calendar> c = DateUtils.iterator(d, DateUtils.RANGE_WEEK_SUNDAY);
 92         System.out.println();
 93         while (c.hasNext()) {
 94             printFormatDate(new Date(c.next().getTimeInMillis()));
 95         }
 96     }
 97 
 98     public void test10() {// 今天是今年第幾天
 99         Date d = new Date();
100         System.out.println(DateUtils.getFragmentInDays(d, Calendar.YEAR));// 21
101     }
102 
103     public void test11() {// 這個月第一個周日
104         Date d = new Date();
105         d = DateUtils.setDays(d, 1);
106         while (true) {
107             Calendar c = Calendar.getInstance();
108             c.setTime(d);
109             if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
110                 printFormatDate(d);// 2016-01-03 10:31:43
111                 break;
112             } else {
113                 d = DateUtils.addDays(d, 1);
114             }
115         }
116     }
117 
118     public void test12() {// 距2月1號還有多少天
119         Date d = new Date();
120         Date d2 = new Date();
121         d2 = DateUtils.ceiling(d, Calendar.MONTH);// 2.1號
122         long day2 = DateUtils.getFragmentInDays(d2, Calendar.YEAR);//2.1是今年第幾天?
123         long day1 = DateUtils.getFragmentInDays(d, Calendar.YEAR);//今天是今年第幾天?
124         System.out.println(day2 - day1);//11
125     }
126 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM