Joda-Time的使用以及其與jdk中時間型別的相互轉換
阿新 • • 發佈:2018-12-26
Joda-Time存在的目的:
任何企業應用程式都需要處理時間問題。應用程式需要知道當前的時間點和下一個時間點,有時它們還必須計算這兩個時間點之間的路徑。使用
JDK 完成這項任務將非常痛苦和繁瑣的,而Joda-Time就是在這樣的背景下誕生的,所以說Joda-Time相較於原生的java中的Date和Calendar時間操作而言,功能更加的強大,但是操作卻更加的簡化,下面是其顯示的程式碼示例:
package com.makotogroup.joda; import java.util.Calendar; import java.util.Date; import java.util.Locale; import org.apache.log4j.Logger; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; public class TestDateTime { private static Logger log = Logger.getLogger(TestDateTime.class); /** * 獲取當前時間 * @return */ public DateTime getCurrentTime(){ return new DateTime(); } public static void main(String[] args) { //當前的Joda-time版本為:joda-time-2.9.9.jar //Joda-time的版本不同,其支援的方法也不盡相同,比如說在joda-time-1.6.jar中,並不支援 //DateTime.parse(String,DateTimeFormatter),而在joda-time-2.9.9.jar中是支援的 TestDateTime testDateTime=new TestDateTime(); //獲取當前時間 DateTime dateTime=testDateTime.getCurrentTime(); //獲取當前時間字串 String dateTimeString=dateTime.toString("yyyy-MM-dd HH:mm:ss"); log.info("當前時間:"+dateTimeString); //獲取年 log.info("當前年:"+dateTime.getYear()); //獲取月 log.info("當前月:"+dateTime.getMonthOfYear()); //獲取日 log.info("當前日:"+dateTime.getDayOfMonth()); //獲取小時 log.info("當前小時:"+dateTime.getHourOfDay()); //獲取分鐘 log.info("當前分鐘:"+dateTime.getMinuteOfHour()); //獲取秒 log.info("當前秒:"+dateTime.getSecondOfMinute()); //獲取毫秒 log.info("當前毫秒:"+dateTime.getMillisOfSecond()); //獲取當前時間戳 log.info("當前的時間戳為:"+dateTime.getMillis()); //獲取周 log.info("當前周為:"+dateTime.getWeekOfWeekyear()); //當前時區為(東八區:INFO - +08:00): log.info("當前周為:"+dateTime.getZone().toString()); //修改周: log.info("當前周加上兩週,結果為:"+dateTime.plusWeeks(2).getWeekOfWeekyear()); //減去2年 log.info("減去兩年,結果為:"+dateTime.plusYears(-2).getYear()); //String轉換為Joda-time DateTimeFormatter dtf=DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); //方法一 DateTime dateTime2 = DateTime.parse(dateTimeString, dtf); //方法二 DateTime dateTime3=dtf.parseDateTime(dateTimeString); log.info("格式化後的結果1:"+dateTime2); log.info("格式化後的結果2:"+dateTime3); //將Joda-time轉換成String log.info("Joda-time轉換成String:"+dateTime.toString("yyyy-MM-dd HH:mm:ss a")); //將Date轉換成Joda-time Date date=new Date(); DateTime dateTime4=new DateTime(date); log.info("Date轉DateTime:"+dateTime4); //將Joda-time轉換成Date log.info("Joda-time轉換成Date:"+dateTime4.toDate()); //將Calendar轉換成Joda-time Calendar calendar=Calendar.getInstance(); DateTime dateTime5=new DateTime(calendar); log.info("將Calendar轉換成DateTime:"+dateTime5); //Joda-time轉換成Calendar Calendar calendar2=dateTime5.toCalendar(Locale.CHINA); log.info("將Joda-time轉換成Calendar:"+calendar2); //自定義時間 //引數分別是:年,月,日,時,分,秒,毫秒 DateTime dateTime6=new DateTime(2015,1,1,1,1,1,1); log.info("自定義的時間:"+dateTime6.toString("yyyy-MM-dd HH:mm:ss a")); //將Joda-time轉換成long型別 log.info("Joda-time轉換成long型別:"+dateTime6.getMillis()); //將long型別轉換成Joda-time long time = 1420045261001L; DateTime dateTime7 = new DateTime(time); log.info("long轉換成Joda-time:"+dateTime7); } }
最後附上Joda-Time api文件的官方地址:
http://www.joda.org/joda-time/apidocs/index.html