【发布时间】:2014-03-11 15:13:46
【问题描述】:
我正在尝试将在 EST 时区打印的日期转换为在 GMT/UTC 打印的日期
package com.stefano;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class MainEntry {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
String dateTime = "1307011200"; //12:00PM 01 July 2013
System.out.println("Input -> " + dateTime);
SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmm");
format.setTimeZone(TimeZone.getTimeZone("EST"));
Date date = format.parse(dateTime);
System.out.println("Intermediate -> " + date);
format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("Output -> " + format.format(date));
}
}
它给出的输出是:
Input -> 1307011200
Intermediate -> Mon Jul 01 17:00:00 BST 2013
Output -> 1307011600
尽管 EST 和 GMT 之间的时差始终为 5,但它以某种方式与 BST 相关。
我不能使用Joda-Time。
【问题讨论】:
-
这给了我不同的输入输出 -> 1307011200 中级 -> Mon Jul 01 18:00:00 BST 2013 Output -> 1307011700
-
这太奇怪了。我每次都可以在我的机器上重现它作为上述输出。
-
另外,更奇怪的是 - 如果我将日期字符串更改为 1301011200(1 月 1 日),则转换是正确的。