jdk8 中 joda dateTime 用法

我們在編寫應用程序都需要處理時間問題。應用程序需要知道當前的時間點和下一個時間點,有時它們還必須計算這兩個時間點之間的路徑。使用 JDK 完成這項任務將非常痛苦和繁瑣。joda-dateTime 可以解決

1、DateTime   

   它以毫秒級的精度封裝時間上的某個瞬間時刻。DateTime 始終與 DateTimeZone 相關,如果您不指定它的話,它將被默認設置爲運行代碼的機器所在的時區。可以使用多種方式構造DateTime對象

            DateTime dt = new DateTime();
            DateTime dt1 = DateTime.now();
            DateTime dt2 = new DateTime(new Date());
            DateTime dt6 = new DateTime(Calendar.getInstance());
            // 指定年月日點分秒生成(參數依次是:年,月,日,時,分,秒,毫秒)
            DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0);
            // 制定ISO8601生成
            DateTime dt4 = new DateTime("2014-08-01T12:32:3");
            DateTime dt5 = new DateTime("2014-08-01");

 

2、LocalDate 該類封裝了一個年/月/日的組合。當地理位置(即時區)變得不重要時,使用它存儲日期將非常方便

            LocalDate localDate = new LocalDate();//輸出格式 yyyy-MM-dd
            LocalDate localDate2 = new LocalDate(new Date());
            LocalDate localDate3 = new LocalDate(2014,8,1);

 

3、LocalTime 這個類封裝一天中的某個時間,當地理位置不重要的情況下,可以使用這個類來只存儲一天當中的某個時間

            LocalTime localTime = new LocalTime();// HH:mm:sss.a
            LocalTime localTime2 = new LocalTime(new Date());

         
4、DateTime 日期獲取年月日時分

            DateTime dte = DateTime.now();
            int year = dte.getYear(); // 2014
            year = dte.getYearOfCentury(); // 14
            year = dte.getYearOfEra(); // 2014
            int month = dte.getMonthOfYear();
            int day = dte.getDayOfMonth();
            day = dte.getDayOfWeek(); // 星期幾
            day = dte.getDayOfYear();// 一年的第多少天
            int hours = dte.getHourOfDay();
            int mills = dte.getMinuteOfHour();
            int second = dte.getSecondOfMinute();


   5、與jdk轉換 

            DateTime dtt = new DateTime();
            // 轉換成java.util.Date對象
            Date d1 = new Date(dt.getMillis());
            Date d2 = dt.toDate();
            // 轉換成java.util.Calendar對象
            Calendar c1 = Calendar.getInstance();
            c1.setTimeInMillis(dt.getMillis());
            Calendar c2 = dt.toCalendar(Locale.getDefault());

6、日期增加減少

            DateTime dtx = DateTime.now();
            dtx.plusDays(1);
            dtx.plusMonths(1);
            dtx.plusYears(1);// 增加1 day,1 months,1 year
            dtx.minusDays(1);
            dtx.minusMonths(1);
            dtx.minusYears(1); // 減少1day,1月,1年
            // 月末日期
            DateTime dtxw = dtx.dayOfMonth().withMaximumValue();
            // 增加58後的哪週週一的日期
            DateTime dxys = dtx.plus(58).dayOfWeek().withMinimumValue();
            // 當天12:00的日期 
            DateTime dateTime = DateTime.now().withHourOfDay(12).withMinuteOfHour(00); 

     

7、日期比較  

            DateTime dateTime2 = new DateTime("2014-09-03");
            DateTime dateTime3 = new DateTime("2014-08-01");
            dateTime2.isAfter(dateTime3); // 後
            dateTime2.isBefore(dateTime3); // 前
            dateTime2.isEqual(dateTime3); // 等
            // 和系統時間比較 false
            System.out.println(dateTime3.isEqual(new DateTime()));
            // 和系統時間比較
            dateTime3.isAfterNow();
            dateTime3.isEqualNow();
            System.out.println(dateTime3.isBeforeNow()); // true


8、計算區間

            DateTime startDateTime = new DateTime("2014-08-01");
            DateTime endDateTime = new DateTime("2014-08-23");
            Duration d = new Duration(startDateTime, endDateTime);
            long time = d.getMillis(); // 毫秒
            Period p = new Period(startDateTime, endDateTime, PeriodType.days());
            int days = p.getDays(); // 天數
            Days.daysBetween(startDateTime, endDateTime).getDays();// 相差天數
            Interval i = new Interval(startDateTime, endDateTime);
            // 驗證某一天是否在該區間內
            boolean contained = i.contains(new DateTime("2014-08-03"));

     

9、格式化

            DateTime dateTimew = new DateTime();
            // 轉成字符串
            dateTimew.toString("yyyy-MM-dd");
            dateTimew.toString("yyyy/MM/dd hh:mm:ss.SSSa");
            dateTimew.toString("yyyy-MM-dd HH:mm:ss");
            dateTimew.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
            dateTimew.toString("yyyy/MM/dd HH:mm ZZZZ");
            dateTimew.toString("yyyy/MM/dd HH:mm Z");
            DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
            dateTimew.toString(formatter);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章