Location.getTime 返回 UTC 有或没有闰秒?

Posted

技术标签:

【中文标题】Location.getTime 返回 UTC 有或没有闰秒?【英文标题】:Location.getTime returns UTC with or without leap seconds? 【发布时间】:2016-04-20 23:42:04 【问题描述】:

android 的 Location 文档声明它提供 UTC。 UTC 是否有闰秒?

关于 Java 是否考虑闰秒有很多问题,大多数人倾向于说它没有,模棱两可before java 7 and clearly afterwards。

但是,getTime() 依赖于 gps 时间,它不考虑闰秒。位置是否添加它们?我对此表示怀疑,但我想确定一下,文档不清楚。

此外,SimpleDateFormat 设置为 timeZone("UTC") 时是否考虑它们? (我知道 UTC 不是时区,但显然 TimeZone.getTimeZone("UTC") 是有效的)

这里间接提出了一个类似的问题:Ticks between Unix epoch and GPS epoch。证明Date.getTime 没有考虑UTC 闰秒。问题是,Location.getTime 也忽略它们吗?我想是的,即使文档声明它报告 UTC,it can't(除非定期更新)并且很可能不会。

【问题讨论】:

【参考方案1】:

我相信你会觉得这个话题很有趣

Android problem finding out how recent latest GPS fix is

但实际上这在文档中并没有真正详细...我对此也很好奇:p

【讨论】:

我不会将设备的时间用于任何事情。这是我想知道的固定时间转换,它是真正的 UTC 还是 UNIX 纪元(自 1970 年以来的毫秒数,没有闰秒)。您链接的问题是关于设备时间的论文,这是一个复杂得多的问题。不过还是谢谢! 这个问题更中肯:***.com/questions/20521750/…。将其添加到问题中以进行澄清。 这不是一个真正的答案。并且文档指出 getTime() 应Return the UTC time of this fix, in milliseconds since January 1, 1970. 所以似乎没有人真正遵守规范,这是不幸的。

以上是关于Location.getTime 返回 UTC 有或没有闰秒?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby 时区——到 UTC 并返回

获取自 UTC 日期的 EPOCH 以来返回错误结果的毫秒? [复制]

new Date()返回相对时间而不是UTC时间

将 UTC 转换为本地时间会返回奇怪的结果

ToUnixTimeMilliseconds 在返回之前将日期转换为 Utc。如果你不想要那个怎么办?

System.currentTimeMillis() 是不是返回 UTC 时间?