在伦敦获得时间

dog*_*ane 5 java datetime calendar dst

如何获得伦敦当前的当地挂钟时间(自1970年1月1日以来的毫秒数)?由于我的应用程序可以在任何位置的服务器上运行,我想我需要使用TimeZone"Europe/London".我还需要考虑夏令时,即应用程序应该在"夏天"增加一个小时.

我更喜欢使用标准的java.util库.

它是否正确?

TimeZone tz = TimeZone.getTimeZone("Europe/London") ;
Calendar cal = Calendar.getInstance(tz);
return cal.getTime().getTime() + tz.getDSTSavings();
Run Code Online (Sandbox Code Playgroud)

谢谢

eri*_*son 12

你不需要__CODE__,只需要一个__CODE__.

TimeZone london = TimeZone.getTimeZone("Europe/London");
long now = System.currentTimeMillis();
return now + london.getOffset(now);
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

其他人说这样做可能不是一个好主意 - 我相信这取决于你的情况,但使用 UTC 肯定是需要考虑的。

但是,我认为您在这里错过了一些东西:自 1970 年 1 月 1 日UTC以来发生的秒数(这是始终定义 Unix 纪元的方式 - 实际上与伦敦相同,因为该日期的偏移量是0) 可通过以下任一表达式获得:

System.currentTimeMillis()
new Date().getTime()
Calendar.getInstance().getTime().getTime()
Run Code Online (Sandbox Code Playgroud)

如果您考虑一下,自该特定时刻以来的毫秒数不会根据您所在的时区而改变。

哦,还有正常的建议 - 要获得更好的日期和时间 API,请参阅Joda Time