【发布时间】:2013-06-20 16:45:07
【问题描述】:
我想以毫秒为单位获取当前的 UTC 时间。我搜索了谷歌并得到了一些 System.currentTimeMillis() 确实返回 UTC 时间的答案。但事实并非如此。如果我执行以下操作:
long t1 = System.currentTimeMillis();
long t2 = new Date().getTime();
long t3 = Calendar.getInstance().getTimeInMillis();
所有三个时间几乎相同(由于调用,差异以毫秒为单位)。
t1 = 1372060916
t2 = 1372060917
t3 = 1372060918
这个时间不是 UTC 时间,而是我的时区时间。如何在android中获取当前的UTC时间?
【问题讨论】:
-
返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的当前系统时间(以毫秒为单位)
-
long t3 = Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis();
-
以上链接显示“请参阅类 Date 的描述,以讨论“计算机时间”和协调世界时 (UTC) 之间可能出现的细微差异。”在 java.util.Date 文档中,您会发现:“虽然 Date 类旨在反映协调世界时 (UTC),但它可能并不完全如此,具体取决于 Java 虚拟机的主机环境”-> 所以它可能您的机器可能返回非 UTC 时间
-
@g.revolution:它是“自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数” - 您希望如何针对时区进行调整?您的本地时区不会影响自该纪元以来发生的毫秒数。
标签: java android datetime utc java.util.date