【发布时间】:2015-04-28 12:15:42
【问题描述】:
我从 Ruby on Rails 网络服务获取 Unix 时间戳格式的当前时间(即从 1970 年 1 月 1 日开始的秒数),服务器上的时区是 UTC。
在 Java 中,我正在尝试将本地当前时间转换为 UTC 时间。但每次它都会提前 6 分钟以上。我想获取UTC当前时间和服务返回时间的差异。我的 Java 代码是 -
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
Date utc_current = new Date(System.currentTimeMillis());
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
long serverTime = 1424936268000L;
long resTime = sdf.getCalendar().getTimeInMillis() - serverTime;
System.out.println("Time Diff : " + resTime);
serverTime 是我从 web 服务获取的时间。 resTime 的值显示负值,大约为 6 分钟以上。
所以我的问题是为什么 UTC 时区会提前为 System.currentTimeMillis 提供时间?
【问题讨论】:
-
时区与问题有什么关系?您的代码不使用 utc_current,它只是将当前时间与硬编码的 long 值进行比较。我怀疑 6 分钟以上的时间是将 ruby 打印的时间复制并粘贴到您的 Java 代码中、重新编译 Java 代码并运行它所花费的时间。您的代码可以简化为
System.out.println("Time Diff : " + (System.currentTimeMillis() - 1424936268000L));
标签: java datetime time timezone