TL;博士
Instant.now() // Capture current moment in UTC.
.toString() // Generate a String object in standard ISO 8601 format, YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ.
2018-02-16T23:28:01.101324Z
java.time
現代的方法使用java.time類。完全避免麻煩的遺留日期 - 時間類。
Instant
類表示UTC中的時間軸上的一個時刻,分辨率爲nanoseconds(小數點後最多九(9)位數字)。
Instant instant = Instant.now() ; // Capture the current moment in UTC.
通過調用toString
生成標準ISO 8601格式的字符串。
String output = instant.toString() ;
如果您需要更多的靈活性比Instant
提供,如格式化而生成的字符串,使用OffsetDateTime
隨着不斷ZoneOffset.UTC
。
OffsetDateTime odt = OffsetDateTime.now(ZoneOffset.UTC) ; // Capture the current moment in UTC.
要以非標準格式生成字符串,請使用DateTimeFormatter
。
關於java.time
的java.time框架是建立在Java 8和更高版本。這些類代替了日期時間類legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time項目,現在在maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310。
使用JDBC driver與JDBC 4.2或更高版本兼容的,你可以交換java.time直接對象與數據庫。不需要字符串和java.sql。*類。
從何處獲取java.time類?
的ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
和more。
@jpredham應該可能得到這個問題的「答案」,因爲他在檢索日期/時間格林威治標準時是正確的。 (我自己測試了它,發現它是真的。)另外他更新,我們其他人已經有相當一部分的聲望。 –
僅供參考,麻煩的舊日期時間類,例如['java.util.Date'](https://docs.oracle.com/javase/9/docs/api/java/util/Date.html),[ 'java.util.Calendar'](https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html)和'java.text.SimpleDateFormat'現在是[legacy]( https://en.wikipedia.org/wiki/Legacy_system),由[java.time]代替(https://docs.oracle.com/javase/9/docs/api/java/time/package-summary。 html)內置到Java 8和Java 9中的類。請參見[Oracle教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 –