我正在使用这段代码来解析这个日期。它必须将新日期显示为“2012-06-20 03:09:38”因为 EDT 是 -4GMT,而我当前的位置是 GMT+5。但它没有显示它现在显示的是这样的
private static void convertEDT_TO_GMT() {
try {
String s = "2012-06-20 18:09:38";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("EDT"));
Date timestamp = null;
timestamp = df.parse(s);
df.setTimeZone(TimeZone.getTimeZone("GMT+05:00"));
System.out.println("Old = " + s);
String parsed = df.format(timestamp);
System.out.println("New = " + parsed);
} catch (Exception e) {
e.printStackTrace();
}
}
It show
旧 = 2012-06-20 18:09:38
新=2012-06-20 23:09:38
时区“EDT”不存在。做一个System.out.println()
`TimeZone.getTimeZone("EDT") 显示它正在回退到 GMT,因为 Java 不知道“EDT”是时区。
更改自"EDT"
to "GMT-04:00"
给出正确的结果:
try {
String s = "2012-06-20 18:09:38";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//df.setTimeZone(TimeZone.getTimeZone("EDT"));
df.setTimeZone(TimeZone.getTimeZone("GMT-04:00"));
Date timestamp = null;
timestamp = df.parse(s);
df.setTimeZone(TimeZone.getTimeZone("GMT+05:00"));
System.out.println("Old = " + s);
String parsed = df.format(timestamp);
System.out.println("New = " + parsed);
} catch (Exception e) {
e.printStackTrace();
}
Result:
Old = 2012-06-20 18:09:38
New = 2012-06-21 03:09:38
根据这个帖子 https://stackoverflow.com/questions/964894/how-to-convert-time-between-timezones-utc-to-edt:
东部夏令时间并不是“完整”时区的名称 - 它实际上是“半”时区,总是比 UTC 晚 4 小时。
所以使用"GMT-04:00"
可能是正确的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)