从字符串解析日期

时间:2013-05-06 19:38:03

标签: java xml parsing date

我将以下时间戳存储为String,我想使用SimpleDateFormat解析但我在转换时遇到一些问题:

我从一个xml文件中读到的TimeStamp:Tue Dec 31 09:29:08 PDT 2013

我的代码:

String timeStamp = innerNode.getTextContent();   //innerNode is a Node object that contains my TimeStamp from an xml file.
System.out.println(timeStamp);
SimpleDateFormat dateFormat = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
dateFormat.setTimeZone(TimeZone.getTimeZone("PDT"));
dateFormat.parse(timeStamp);

Date firstParsedDate = dateFormat.parse(timeStamp);
System.out.println(firstParsedDate);

这样效果很好但我的结果很奇怪。而不是打印Tue Dec 31 09:29:08 PDT 2013而是我的结果:Tue Dec 31 11:29:08 CDT 2013

任何想法有什么不对?感谢。

2 个答案:

答案 0 :(得分:2)

Date.toString不会使用您为创建它的SimpleDateFormat输入的时区。相反,你应该这样做:

System.out.println(dateFormat.format(firstParsedDate));

这应该使用您在格式化程序上设置的正确时区。 toString只使用系统时区。

答案 1 :(得分:1)

java中的日期对象将使用系统时区。您的系统处于CDT时区而不是PDT。所以这个日期是用CDT打印的。