我将以下时间戳存储为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
任何想法有什么不对?感谢。
答案 0 :(得分:2)
Date.toString
不会使用您为创建它的SimpleDateFormat
输入的时区。相反,你应该这样做:
System.out.println(dateFormat.format(firstParsedDate));
这应该使用您在格式化程序上设置的正确时区。 toString
只使用系统时区。
答案 1 :(得分:1)
java中的日期对象将使用系统时区。您的系统处于CDT时区而不是PDT。所以这个日期是用CDT打印的。