使用带时区的SimpleDateTimeFormatter时获取不正确的解析日期

时间:2015-10-19 14:32:00

标签: java datetime

我有以下代码:

  SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    String s2 = "Mon Oct 19 19:52:21 IST 2015";
    System.out.println(format.parse(s2));

我预计该代码会打印出“2015年10月19日07:22:21 PDT 2015”,但令我惊讶的是它印有“2015年10月19日10:52:21 PDT 2015”。我可以看到“IST”是“z”的有效时区。但是,以下代码工作正常:

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    String s2 = "Mon Oct 19 19:52:21 GMT+05:30 2015";
    System.out.println(format.parse(s2));

请帮忙。

2 个答案:

答案 0 :(得分:2)

使用ChartObjects("Chart 1").OnAction = "yourMacro" 是危险的,因为它可能代表印度或以色列ST。 假设你的意思是印度ST,试试这个:

IST

另外,请遵循@ Meno的回答

的建议

答案 1 :(得分:0)

代码表达式

System.out.println(format.parse(s2));

始终在您的系统时区中打印您的即时/时刻(java.util.Date类型的对象),这显然是PDT。您隐式在toString()上应用方法java.util.Date。使用像SimpleDateFormat这样的专用格式化程序,并在此格式化程序上设置时区以获得所需的结果。

最后你需要两个格式化程序,一个用于解析,一个用于打印。