我正在开发的基于时间的应用程序遇到了一些问题,该应用程序在 Android 客户端使用 Java,在服务器端使用 Python。在 Java 和 Python 报告的时间中,我遇到了 -3 小时的差异(这正是 Android 设备的时区),即使在双方我都以某种方式获得时间(根据 SO 和其他网站) 返回一个 UTC 时间。在我的客户中,我正在使用
Date utcNow = new Date()
在服务器中,我使用
datetime.datetime.now()
然而,当同时运行时,它们分别产生2013-09-09 11:52:16
和2013-09-09 14:52:16
。我怀疑问题出在 Java 方面,因为date
在服务器中运行返回与 Python 相同的值(显然),使用时区 UTC,并且 Android 设备中的相同命令返回 BRT (GMT-3) 时间。
在搜索两种语言的时区调整时,所有答案都声称上述方法将返回 UTC 日期,但这种差异清晰可见。
如何将 Android 设备的时间转换为 UTC?
现在我正在使用一个非常丑陋(并且非常不推荐)的解决方案:utcNow.setHours(utcNoe.getHours()+3)
编辑:旁注:从乔恩的回答中,我注意到 Java 的Date
对象等同于 Python 的天真datetime
对象。