【发布时间】:2025-11-26 23:20:03
【问题描述】:
我使用以下代码将 GPS 位置的时间戳转换为人类可读的形式:
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", location.getTime())
根据the docs,GPS 位置时间戳应采用 UTC。但是,我得到的字符串是本地时间的(在两个不同的设备上测试过)。
我尝试使用另一种形式的String.format(),它需要一个额外的Locale 参数,并传递一个空语言环境(根据文档,这意味着“没有本地化”)——仍然相同。 (Locale 的文档根本没有提到时区,因此我怀疑语言环境是这里的问题。)
我的另一个怀疑是 GPS 堆栈可能没有按照指定的方式运行,提供本地时间而不是 UTC。我用
测试了这个String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", (long) 0)
返回
1970-01-01 01:00:00
这是纪元的开始加上 CET 的时区偏移量(设备的时区)。因此,String.format() 明确添加了偏移量。
String.format() 是否应该进行任何时区转换?我如何影响这种行为,即选择要转换到哪个时区或完全禁止转换?
【问题讨论】:
标签: java android timezone string-formatting