【发布时间】:2017-02-26 12:47:34
【问题描述】:
我有一个“yyyyMMdd”的字符串日期“20160104”,它是 GMT-12 时区。
一直在尝试将其解析为 Java 中的 Date 对象。预期结果是
FastTime = 1451908800000。格林威治标准时间 2016 年 1 月 4 日星期一下午 12:00:00
试过这样的
DateFormat gmtMinus12 = new SimpleDateFormat("yyyyMMdd");
gmtMinus12.setTimeZone(TimeZone.getTimeZone("Etc/GMT-12"));
// gmtMinus12.getCalendar().setTimeZone(TimeZone.getTimeZone("Etc/GMT-12"));
gmtMinus12
.setCalendar(Calendar.getInstance(TimeZone.getTimeZone("Etc/GMT-12")));
try {
Date date = gmtMinus12.parse("20160104");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是解析出来的输出是
快速时间 = 1451822400000 。格林威治标准时间 2016 年 1 月 3 日星期日下午 12:00:00
如何使 DateFormat 假定与分配的时区相同。
非常感谢任何帮助。
提前致谢。
【问题讨论】:
-
将时区显式添加到输入字符串(和解析模式)
-
当您指定不同时区的日期时,为什么希望结果是 UTC 午夜?基本上,2016 年 1 月 4 日星期一在 Etc/GMT-12 中从您已经检索到的值开始。
-
抱歉,我刚刚编辑了我的预期结果。 20160104 00:00 GMT-12。 (假设夏威夷)可能是 20160104 下午 12:00 在伦敦,所以我预计结果将是格林威治标准时间 2016 年 1 月 4 日星期一下午 12:00:00
-
看起来 DateFormat 正在执行 -12 而不是 +12 小时
标签: java calendar timezone date-format simpledateformat