如何在伦敦获得当前的当地挂钟时间(自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();
由于
答案 0 :(得分:10)
您不需要Calendar
,只需要TimeZone
。
TimeZone london = TimeZone.getTimeZone("Europe/London");
long now = System.currentTimeMillis();
return now + london.getOffset(now);
答案 1 :(得分:4)
其他人说这样做可能不是一个好主意 - 我相信这取决于你的情况,但使用UTC肯定是需要考虑的事情。
但是,我认为你在这里错过了一些东西:自1970年1月1日以来发生的秒数 UTC (这是Unix时代总是被定义的 - 并且实际上与在伦敦,因为该日期的偏移量为0)可通过以下任何表达式获得:
System.currentTimeMillis()
new Date().getTime()
Calendar.getInstance().getTime().getTime()
如果您考虑一下,自特定时刻以来的毫秒数不会因您所在的时区而改变。
哦,这是正常的建议 - 要获得更好的日期和时间API,请参阅Joda Time。
答案 2 :(得分:2)
获取伦敦当前时间:
SimpleDateFormat f = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
f.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println(f.format(GregorianCalendar.getInstance().getTime()));