【发布时间】:2016-03-11 19:21:48
【问题描述】:
我有一个要求,我必须使用时区存储不同的日期和时间。 我使用了 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)));
我得到输出为 Sat Mar 12 00:44:10 IST 2016 但我希望输出为 java.util.Date 类型的 2016-03-11T14:14:10-05:00。有人可以建议我哪里出错了吗?
【问题讨论】:
-
目前您在最后一行调用
Date.toString()。到那时,您又回到了许多其他问题的同一点——java.util.Date不存储时区或格式。 -
(如果可以的话,我强烈避免使用
java.util.Date- 尽可能广泛地使用java.time类型。) -
如果你使用 Java 8,为什么要
Date?
标签: java java-8 date-format simpledateformat date-formatting