Joda Time 使用
阿新 • • 發佈:2018-03-06
http max mmm eee 但是 with ring mea ica
layout: default
title: Joda Time 使用
category: [工具, Java]
comments: true
---
Joda Time 使用
對於系統的一些時間操作很是不方便,為了方便轉化,有時候用date,有時候用timestmp,有時候用calendar,忍不住想更改了.
但是任務巨大,先把筆記收藏了,後面有機會再更改了.下面只是幾個使用的例子.
1、 獲取今天的開始時間:比如:2014-06-19 00:00:00
//joda DateTime nowTime = new DateTime(); DateTime startOfDay = nowTime.withTimeAtStartOfDay(); //jdk Calendar c1 = Calendar.getInstance(); c1.setTimeInMillis(timeInMs); c1.set(Calendar.HOUR_OF_DAY, 0); c1.set(Calendar.MINUTE, 0); c1.set(Calendar.SECOND, 0); c1.set(Calendar.MILLISECOND, 0); return c1.getTimeInMillis();
2、 獲取今天的結束時間:比如:2014-06-19 23:59:59
//joda DateTime nowTime = new DateTime(); DateTime endOfDay = nowTime.millisOfDay().withMaximumValue(); //jdk Calendar c1 = Calendar.getInstance(); c1.setTimeInMillis(timeInMs); c1.set(Calendar.HOUR_OF_DAY, 23); c1.set(Calendar.MINUTE, 59); c1.set(Calendar.SECOND, 59); c1.set(Calendar.MILLISECOND, 0); return c1.getTimeInMillis();
3、 獲取現在距離今天結束還有多長時間
//joda
DateTimenowTime = new DateTime();
DateTime endOfDay = nowTime.millisOfDay().withMaximumValue();
endOfDay.getMillis()-nowTime.getMillis()
4、 計算兩個日期的相隔天數
- JodaTime
//joda DateTime nowTime = new DateTime(); DateTime futureTime = new DateTime(2015, 10, 1, 0, 0, 0); Int days = Days.daysBetween(nowTime, futureTime).getDays(); //jdk public static int getBetweenDay(long startTime, long endTime) { Calendar start = Calendar.getInstance(); start.setTimeInMillis(startTime); Calendar end = Calendar.getInstance(); end.setTimeInMillis(endTime); return (int) ((end.getTimeInMillis() - start.getTimeInMillis()) / 86400000); }
5、 創建任意時間對象
//Joda-time
DateTime dateTime=new DateTime(2012, 12, 15, 18, 23,55);
//jdk
Calendar calendar=Calendar.getInstance();
calendar.set(2012, Calendar.NOVEMBER, 15, 18, 23,55);
6、 與JDK互操作
//通過jdk時間對象構造
Date date = new Date();
DateTime dateTime = new DateTime(date);
Calendar calendar = Calendar.getInstance();
dateTime = new DateTime(calendar);
// Joda-time 各種操作.....
dateTime = dateTime.plusDays(1) // 增加天
.plusYears(1)// 增加年
.plusMonths(1)// 增加月
.plusWeeks(1)// 增加星期
.minusMillis(1)// 減分鐘
.minusHours(1)// 減小時
.minusSeconds(1);// 減秒數
// 計算完轉換成jdk 對象
Date date2 = dateTime.toDate();
Calendar calendar2 = dateTime.toCalendar(Locale.CHINA);
7、 加上90天後輸出
//joda
DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0);
System.out.println(dateTime.plusDays(90).toString("E MM/dd/yyyy HH:mm:ss.SSS");
jdk
Calendar calendar = Calendar.getInstance();
calendar.set(2000, Calendar.JANUARY, 1, 0, 0, 0);
SimpleDateFormat sdf =
new SimpleDateFormat("E MM/dd/yyyy HH:mm:ss.SSS");
calendar.add(Calendar.DAY_OF_MONTH, 90);
System.out.println(sdf.format(calendar.getTime()));
8、 時間的輸出顯示
//通過標準的 ISO-8601輸出
DateTime dateTime = SystemFactory.getClock().getDateTime();
dateTime.toString(ISODateTimeFormat.basicDateTime());
dateTime.toString(ISODateTimeFormat.basicDateTimeNoMillis());
dateTime.toString(ISODateTimeFormat.basicOrdinalDateTime());
dateTime.toString(ISODateTimeFormat.basicWeekDateTime());
//傳遞 SimpleDateFormat字符串輸出
DateTime dateTime = SystemFactory.getClock().getDateTime();
dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");
dateTime.toString("dd-MM-yyyy HH:mm:ss");
dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");
dateTime.toString("MM/dd/yyyy HH:mm Z");
//輸出的結果如下:
20090906T080000.000-0500
20090906T080000-0500
2009249T080000.000-0500
2009W367T080000.000-0500
09/06/2009 02:30:00.000PM
06-Sep-2009 14:30:00
Sunday 06 September, 2009 14:30:00PM
09/06/2009 14:30 America/Chicago
09/06/2009 14:30 -0500
參考的博客
Joda Time 使用 - CSDN博客
http://blog.csdn.net/zeus_9i/article/details/32318771
Overview (Joda-Time 2.9.9 API)
http://www.joda.org/joda-time/apidocs/
強大易用的日期和時間庫 Joda Time - 堅持而不浮躁 - ITeye博客
http://persevere.iteye.com/blog/1755237
Joda-Time 簡介
https://www.ibm.com/developerworks/cn/java/j-jodatime.html
Releases · JodaOrg/joda-time(github架包和源碼地址)
https://github.com/JodaOrg/joda-time/releases
Joda Time 使用