[英]Date formatter in java 8
我有一個必須存儲時區的不同日期和時間的要求。 我已經使用了Java 8的ZonedDateTime。
ZoneId zoneId = ZoneId.of("US/Eastern");
ZonedDateTime zt = ZonedDateTime.now(zoneId);
System.out.println(zt.toString());
我的問題是我想以java.util.Date格式存儲它。 我用了DateTimeFormatter
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
dtf.format(zt);
直到這里工作正常,當我嘗試使用簡單的日期格式將其轉換為java.util.Date時,這給了我所需的字符串格式日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println(sdf.parse(dtf.format(zt)));
我在IST 2016年3月12日星期六00:44:10獲得輸出,但我希望在java.util.Date類型中輸出為2016-03-11T14:14:10-05:00。 有人可以建議我要去哪里錯嗎?
您使用了錯誤的方式,這是正確的代碼
sdf.format(sdf.parse(val))這樣正確的方法。
ZoneId zoneId = ZoneId.of("US/Eastern");
ZonedDateTime zt = ZonedDateTime.now(zoneId);
System.out.println(zt.toString());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
String val = dtf.format(zt);
System.out.println(val);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
//String dateStr = zt.format(sdf);
System.out.println(sdf.format(sdf.parse(val)));
最好避免使用舊的日期時間類,包括java.util.Date。 但是,如果必須,您可以進行轉換。 在舊的java.util.Date類上調用from
方法。
為此,您需要在UTC的時間軸上Instant
一下。
Instant instant = myZonedDateTime.toInstant();
java.util.Date juDate = java.util.Date.from( instant );
要走另一個方向:
Instant instant = juDate.toInstant();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.