SimpleDateFormat解析始终返回EDT日期

时间:2015-03-23 22:03:01

标签: java parsing date timezone simpledateformat

我有一个问题。我已经完成了所有相关的帖子,但无法摆脱这种情况。我正在尝试将美国/太平洋日期从字符串转换为日期对象:

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yy HH:mm:SS a z");
df.setTimeZone(TimeZoneUtil.getTimeZone("US/Pacific"));
String userTime = df.format(date);// User Time - Returns correct US/Pacific time
Date userDate =  df.parse(userTime); // Always returns the date in EDT

我知道Date没有自己的格式,但我完全厌恶看到解析方法返回EDT时间。

我的问题是我想将userTime字符串转换为与我设置为SimpleDateFormat的格式/时区相同的Date对象。我需要帮助的人......绝望地等待。提前致谢

2 个答案:

答案 0 :(得分:0)

查看documentation

  

解析[...] TimeZone值可能会被覆盖,具体取决于给定的模式和文本中的时区值。之前通过调用setTimeZone设置的任何TimeZone值可能需要恢复以进行进一步操作。

希望这可以提供帮助

答案 1 :(得分:0)

java.util.Date个对象不属于时区。当您调用toString时,构建的字符串将位于jvm的本地时区。

如果您想在不同时区构建字符串,则需要构建一个新的SimpleDateFormat,或者在格式化之前再次设置时区。