【发布时间】:2019-01-06 13:32:29
【问题描述】:
我的应用程序的用户输入计划的事件提供
- 日期
- 开始时间
- 结束时间
- 地理位置(在地图上)
我想将日期和时间转换为 UTC。我的应用在 GAE (Python) 上,因此 timezonefinder 或 pytzwhere 等工具无法正常工作(GAE 运行时不支持模块的依赖项)。
使用在线 API 将是一个解决方案。到目前为止,我检查了 Google Timezone API。您为其提供地理位置,它将返回时区信息。但是,要处理 DST,您还必须为其提供时间戳。 奇怪的是,您必须提供 UTC 时间戳作为输入,而这正是我想要的输出!
我可以根据我的本地日期时间信息给它一个时间戳(因此无需时区校正),它会返回我需要将我的本地日期时间转换为 UTC 的 rawOffset 和 dstOffset,但它可能在某些日期时间不正确DST 过境期间([-12 小时,+12 小时],我认为,取决于实际偏移量),因为我没有提供正确的 UTC 时间戳。
是否有一种明显的(在线)方法可以根据地理位置将本地日期时间转换为 UTC 日期时间?
我想到的一种获得准确性的方法是应用我从 API 收到的 rawOffset 和 dstOffset,再次生成 UTC 时间戳,并使用该时间戳再次调用 API。我的结果可能不正确的 DST 过境时间现在应该限制在 +/-1 小时。但这超出了我的印象,还要考虑 API 的配额。
【问题讨论】:
-
地理位置(坐标)不足以知道用户所在的国家。例如,根尼西岛和泽西岛离法国很近,但属于英格兰。两国之间只有一小时。您应该向用户询问国家/地区或找到一种从网络浏览器获取的方法。
-
你能要求用户选择他们的时区而不是指定一个位置吗?这让它变得更容易......
-
这不是您问题的真正答案,但我想确保您知道Second Generation App Engine runtime supports arbitrary dependencies(不过它也只是 Python 3)。
标签: python datetime google-app-engine timezone utc