我正在使用以下代码将时间转换为本地时间。它按时“按时”运行,但今天却提前了一个小时。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("EST"));
使用“ET”而不是“EST”不起作用。
如何更正转换时间?
谢谢!
答案 0 :(得分:1)
您只显示创建SimpleDateFormat的代码,所以显然您确定问题存在于那里?
调试日期/时间/时区/夏令时相关的问题可能非常困难,因为很难看到'实际日期;当你检查它时,Date的toString方法会对它自己进行一些时区转换(基于当前的语言环境)。所以我发现将所有输入转换为UTC然后以UTC语言环境打印出来最容易。
无论如何,你说' ET'不起作用?我对它没什么经验,但如果你查看TimeZone的文档,你应该能够提出一个算法,打印出你系统上安装的所有时区。如果EST与ET不同(是吗?)那么这将永远不会奏效。您需要确定Java已分配给ET时区的名称,并使用它们来创建日期格式化程序。
诀窍是使用语言环境X的日期格式化程序解析输入(在语言环境X中),然后在计算中使用日期(始终为UTC,因此可以说是时区中性)。然后,再次使用具有正确语言环境的日期格式返回时区X或Y进行输出。
答案 1 :(得分:0)
您可以尝试使用EDT。
我知道这似乎与你在这里要做的事情完全相反,但如果它看到EST并尝试转换为EDT,你可能会在某处进行双重调整。
今天夏令时的事实真正指向TimeZone问题。