【发布时间】:2017-05-23 09:47:58
【问题描述】:
我有以下代码
protected void amethod1() {
String strDate = "Thu May 18 16:24:59 UTC 2017";
String dateFormatStr = "EEE MMM dd HH:mm:ss zzz yyyy";
DateFormat dateFormat = new SimpleDateFormat(dateFormatStr);
Date formattedDate = null;
try {
formattedDate = dateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
formattedDate 的结果值为 - "Thu May 18 11:24:59 CDT 2017" 。
我正在芝加哥测试这段代码,当地时区是 CDT。
我无法理解为什么时间值会从 16:24:59 变为 11:24:59。我是否遗漏了定义的日期格式的内容?
【问题讨论】:
-
您将日期声明为 UTC,并在 CDT 中获得结果,因此差异是合乎逻辑的。您是否尝试在 UTC 中获得结果?
-
@Nathan - 是的,没错。我希望结果是 UTC。
-
java.util.Date将时间转换为系统的时区。要获得 UTC,您可以将日期转换为 ZonedDateTime。
标签: java simpledateformat date-format