问题已解决外部设备正在计算和发送非标准的2小时移位时间戳,这非常困惑我并启动了此线程。 TIMESTAMP本身不受时区,时区从人类可读形式/转换只有当适用。在Java中的不同时区和不同DST之间转换unix时间戳
我在UTC时区的时间戳(自Unix纪元秒) - 没有DST(夏令时间)。
我想在“欧洲/布拉格”时区,使用DST时间戳(自Unix纪元秒)。
我曾经认为Unix时间戳是由未结合的时区,该时区只影响转换时间戳人类可读的格式的过程。但看起来不是这样。而我试图转换它(使用Calendar和TimeZone类)越多,我越感到困惑和迷茫。
预期验证码不起作用:
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTimeInMillis(ts*1000);
cal.setTimeZone(TimeZone.getTimeZone("Europe/Prague"));
return cal.getTimeInMillis()/1000;
这是什么呢?在每行代码之间打印cal时会发生什么? – 2013-04-22 13:23:30
你或许应该说明你是否会有兴趣在[乔达时间(HTTP://joda-time.sourceforge。网/)解决方案,因为我怀疑你会开始接收它们。 – 2013-04-22 13:24:53
@Peter最近的时间戳'1366642620'它返回了同一个 - 没有转换发生。如果我尝试在UTC和欧洲/布拉格时区打印出PHP中的时间戳,我会得到不同的时间:14:57和16:57 – David162795 2013-04-22 13:40:16