- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将我的旧日期格式化代码更新为 Java 8 并尝试使用 ZonedDateTime API。
日期的格式与 Javascript Date 对象格式相同,例如-
Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)
我之前使用的是以下格式 -
EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'
此格式无法使用 DateTimeFormatter.ofPattern 方法解析日期字符串。
代码如下:
public static final String DATE_FORMAT = "EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'";
public static void main(String[] args) throws ParseException {
String sDate = "Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)";
parseDate(sDate);
}
private static void parseDate(String sDate) throws ParseException {
// works
DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
Date oldDate = dateFormat.parse(sDate);
//FIXME: can't parse?!
ZonedDateTime newDate = ZonedDateTime.parse(
sDate, DateTimeFormatter.ofPattern(DATE_FORMAT)); // <- this is the line 25!
}
这是我的完整引用代码,可以编译运行- https://gist.github.com/bhabanism/470e03db54981ad6ddedbba316dcaa9a
这在第 25 行失败了:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {HourOfAmPm=10, MilliOfSecond=0, MinuteOfHour=0, OffsetSeconds=43200, MicroOfSecond=0, NanoOfSecond=0, SecondOfMinute=0},ISO,Pacific/Auckland resolved to 2017-05-25 of type java.time.format.Parsed
注意,我不能改变日期的输入格式,它必须是
Thu May 25 2017 10:00:00 GMT+1200 (New Zealand Standard Time)
我肯定可以修改格式化程序
EEE MMM dd yyyy hh:mm:ss 'GMT'Z '('zzzz')'
最佳答案
您的格式字符串中似乎一直存在错误。小写的 hh
表示 AM 或 PM 内的小时,范围为 1 到 12。由于您的字符串中没有 AM/PM,我怀疑这绝不是您想要的,我想知道如何错误没有被注意到。
大写 HH
表示一天中的小时,从 0 到 23:
public static final String DATE_FORMAT = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z '('zzzz')'";
有了这个改变,旧的和新的解析方式都可以在我的电脑上工作。
将 Locale.ENGLISH
添加到两个格式化程序时,即。您可能想做同样的事情。
我得到的结果是
Thu May 25 00:00:00 CEST 2017
2017-05-25T10:00+12:00[Pacific/Auckland]
由于 CEST 比 UTC 早 2 小时,所以这是同一时间点,只是呈现方式不同。
关于java - 与 Java 8 ZonedDateTime API 不兼容的旧日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087339/
我是一名优秀的程序员,十分优秀!