D1和D2显然是不同的,所以它们的格式不应该是相同的
那么他们就不会,如果你有一个明确的格式 - 但你不知道。 (嘿,甚至留下的时区,你只格式化到一小时,所以它是微不足道的创建不等于Date
值格式化为相同的字符串。)
您正在格式化系统默认的本地时间这意味着如果时区的UTC时差恢复(例如2015年11月1日在America/Los_Angeles中),则可以有相同的本地时间出现两次......因此,您可以获得相同的字符串输出两个不同的时间。当您拨打parse
时,您如何期望格式化程序能够推断出您的原始值是哪个值的信息?
请注意,在特定时区内不存在java.util.Date
这样的事情 - Date
仅表示自Unix时代以来的毫秒数。
另请注意,PST并非真正的时区标识符 - 您最好使用IANA标识符(如America/Los_Angeles)。如果您确实需要UTC-8的时区而不进行DST更改,则可以使用Etc/GMT + 8。 +8(而不是-8)是由于在这里使用了Posix风格的偏移量。有点混淆......另一种选择是拨打TimeZone.setDefault(new SimpleTimeZone(-28800000, "UTC-8"))
。
我的答案解释了为什么你看到当前的行为。我不能告诉你如何继续,因为我不知道你在努力达到什么目的。 –