是的,使用Joda-Time
當然在Java 8中使用Joda-Time或java.time package(受Joda-Time啓發)。舊的java.util.Date
和java.util.Calendar
班是出了名的麻煩,混亂和過時。
此外,請閱讀有關UTC和ISO 8601的維基百科頁面。
是,通日期爲喬達時間構造
➔的確不錯,你可以傳遞一個java.util.Date
對象的喬達時間DateTime
對象的constructor。
該API文檔有點混亂,因爲這顯然落入構造函數的catch-all版本採取java.lang.Object
實例。如果該對象實際上是java.util.Date
,則Joda-Time將提取其毫秒數,因爲它自己的數字爲epoch。
時區
一個DateTime
構造還分配一個時區。默認情況下,JVM的當前默認時區已分配。我建議你總是通過一個期望的時區,而不是默認依賴默認即使這意味着調用getDefault
。
示例代碼
以下是在約達時間2.5一些示例代碼示出了如何將一個java.util.Date傳遞到約達時間的構造函數。
java.util.Date date = new java.util.Date();
DateTimeZone zone = DateTimeZone.forID("America/Montreal");
DateTime dateTimeMontreal = new DateTime(date , zone);
DateTime dateTimeUtc = dateTimeMontreal.withZone(DateTimeZone.UTC); // Adjust to another time zone.
轉儲到控制檯。
System.out.println("date: " + date); // Misleading output. A j.u.Date is in UTC but its toString method applies JVM’s current default time zone.
System.out.println("dateTimeMontreal: " + dateTimeMontreal);
System.out.println("dateTimeUtc: " + dateTimeUtc);
運行時。
date: Sat Oct 18 18:54:55 PDT 2014
dateTimeMontreal: 2014-10-18T21:54:55.740-04:00
dateTimeUtc: 2014-10-19T01:54:55.740Z
如問題所示,從日期時間到java.util.Date去,叫toDate
。
java.util.Date date = dateTimeMontreal.toDate();
可能出現重複http://stackoverflow.com/questions/5042587/convert-from-java-util-date-to-jodatime – Xorty 2012-01-02 10:21:41
好了,它的作品,感謝,但根據API沒有這樣的接受日期的構造函數...再次感謝,也許我誤解了一些東西。 – cscsaba 2012-01-02 10:34:15
不客氣:) – Xorty 2012-01-02 11:12:59