使用java.time
在Java方面,解析使用java.time類。 YearMonth
類表示一年和一個月。
DateTimeFormatter f = DateTimeFormatter.ofPattern("MMM-yyyy");
YearMonth ym = YearMonth.parse("Jan-2014" , f);
我們可以從該月的第一天,得到LocalDate
。
LocalDate today = ym.atDay(1);
如果你想爲蜂巢的日期,唯一的價值,你給標準的SQL格式的字符串。對於僅限日期的值,SQL格式與ISO 8601格式一致。分析或生成字符串時,java.time類默認使用標準ISO 8601格式。
String output = today.toString(); // YYYY-MM-DD format per ISO 8601 standard.
從那裏你顯然想要一個日期時間值。我們可以任意分配一天的第一時刻。日期和確定第一個時刻的含義取決於時區。對於任何特定時刻,日期和時間在全球各地按時區而不同。
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = today.atStartOfDay(z);
從,你可以生成自1970年開始在UTC(1970-01-01T00:00:00Z
)時代的一些整秒喂到蜂巢。
long secondsSinceEpoch = zdt.toEpochSecond();
走向另一個方向,則需要經過Instant
類。 Instant
類表示UTC中時間軸上的一個時刻,分辨率爲nanoseconds(小數點後最多九(9)位數字)。
Instant instant = Instant.ofEpochSecond(1_388_534_400L);
如果您想查看某個地區的wall-clock time,請應用時區。
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = instant.atZone(z);
關於java.time
的java.time框架是建立在Java 8和更高版本。這些類取代的麻煩舊日期,時間類,如java.util.Date
,.Calendar
,& java.text.SimpleDateFormat
。
Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。
大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。
ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
和more。