将已知位置的原始日期时间转换为UTC日期时间

2024-07-06 21:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我的应用程序的用户输入计划的事件,提供

  • 日期
  • 开始时间
  • 结束时间
  • 地理位置(在地图上)

我想把日期和时间转换成UTC。我的应用程序在GAE(Python)上,所以像timezonefinder或pytzwhere这样的工具不起作用(GAE运行时不支持模块的依赖性)。在

使用在线API将是一个解决方案。到目前为止,我检查了Google时区API。您为它提供一个地理位置,它将返回时区信息。但是,要处理DST,还必须提供时间戳。奇怪的是,您必须提供UTC时间戳作为输入,而这正是我想要的输出!

我可以根据我的本地日期时间信息给它一个时间戳(因此没有时区修正),它会返回我需要将本地日期时间转换为UTC的rawOffset和dstOffset,但是它可能不适合在DST过境期间的某个时间段([-12h,+12小时),这取决于实际的偏移量),因为我没有提供正确的UTC时间戳。在

是否有一种基于地理位置将本地日期时间转换为UTC日期时间的明显(在线)方法?

获得某种精度的一种方法是应用从API接收到的rawOffset和dstOffset,再次生成UTC时间戳,并使用该时间戳再次调用API。DST过境期间,我的结果可能不正确,现在应限制在+/-1小时。但这超出了我的印象,也考虑到API的配额。在


Tags: 方法用户api信息应用程序时间地理位置计划
2条回答

为了根据地理位置将本地日期时间信息转换为UTC,您只需将任意时间戳传递给Google Time Zone API,主要目的是检索该位置的timeZoneId。在

请求示例:

https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=0&key=YOUR_API_KEY

回答示例:

^{pr2}$

然后,您可以使用timeZoneId和用户输入的日期和时间信息以及pytz在本地时间创建一个python日期时间对象,并获得我认为您正在寻找的UTC时间戳。此方法将根据用户输入的日期处理夏令时。例如:

^{3}$

重要提示:我还没有用来自timeZoneId的API的所有可能返回值进行测试,以确保从API返回的内容将被pytz正确地解释(它与示例时区“America/LosöAngeles”一起工作,但是您需要进行测试以确保它对于您所处理的地理位置是一个健壮的解决方案与)。在

在网页中,可以使用JavaScript函数^{}计算用户本地时间和UTC时间之间的时差:

The getTimezoneOffset() method returns the time zone difference, in minutes, from current locale (host system settings) to UTC.

然后,您可以向所有需要时区偏移量的URL添加一个参数。另一个解决方案是把这个放进饼干里。在

从服务器端,您可以检索时区偏移量来计算UTC日期/时间。在

相关问题 更多 >