通过传递城市和国家如何获取时区?

4
在我的Django项目中,我有一个小型酒店数据库,其中有字段citycountry。通过以某种方式将citycountry作为参数传递,我能否获得该地点的timezone?我之所以想这样做是因为我有一些基于酒店check-in时间与当时酒店时间差异的命令。由于datetime.now()返回naive datetime,我无法将其用于与酒店时间进行比较。请问应该如何解决问题呢?谢谢:)

1个回答

7
要通过城市和国家解决时区问题,首先需要获取纬度/经度坐标。有多种方法可以实现这一点,包括各种城市、机场代码数据库或通过反向地理编码地址。
请注意,世界上有一些城市的部分地区遵循不同的时区。在这些情况下,您可能会有一些小误差。请参阅此帖子:一个城市可以有两个时区吗? 由于您说您正在寻找特定地点(酒店)的位置,因此最好使用其完整地址对每个地点的确切坐标进行地理编码。有许多此类服务,例如Google提供的服务
然后在这里描述的服务之一中使用这些坐标:如何使用纬度和经度坐标从位置获取时区? 一旦您拥有时区 ID,例如 Asia/SeoulAmerica/New_York,则可以像用户 falsetru 在其答案中所示的那样在 pytz 函数中使用它。
您可以通过事先检查您感兴趣的城市是否已经是时间区数据库中定义的城市之一来加快速度。但是世界上有成千上万个城市,而不仅仅是那些具有时区 ID 的主要城市。
其他想法:
  • 您可以使用带有时间区地图数据 这里GeoDjango
  • 您可以查看 Django-GeoNames,看看是否包括了 GeoNames 的时区。
  • 可能会有一些其他专门用于此目的的 Django 或 Python 库,我在谷歌上的 5 分钟搜索中没有找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接