如何通过城市和国家获得时区?

Dee*_*eyi 4 python django timezone pytz

在我的django项目中,我有一个小型酒店数据库,其中包含字段citycountry.

我可以timezone通过传递citycountry作为参数得到那个地方.

我想这样做的原因是因为我有一些命令可以根据check-in酒店的时间差异 和现在的时间来进行.由于datetime.now()给出了天真的日期时间,我不能用它来与酒店时间进行比较.

我如何期待解决方案.谢谢 :)

Mat*_*int 7

要按城市和国家/地区解析时区,首先需要获取纬度/经度坐标.请参阅此问题及其各种答案:https://stackoverflow.com/q/23572/634824

请注意,世界上有些城市的部分区域可以观察到不同的时区.在这些情况下,您可能会有一些小的误差.看到这篇文章:2个时区可以用于1个城市吗?

既然您说您正在寻找特定地点(酒店)的位置,那么您最好使用其完整地址对每个地方的确切坐标进行地理编码.有很多服务,例如Google提供的服务.

然后使用此处描述的服务之一中的坐标:如何使用纬度和经度坐标从某个位置获取时区?

一旦你有了时区id,比如Asia/Seoulor America/New_York,那么你可以在pytz函数中使用它,因为用户在他的回答中显示了falsetru.

如果您感兴趣的城市已经是时区数据库中定义的城市之一,您可以通过提前检查加快速度.但是,世界上有数千个城市,而不仅仅是那些有时区的城市.

其他想法

  • 您可以将GeoDjango此处的时区地图数据一起使用.
  • 您可以查看Django-GeoNames并查看是否包含GeoNames的时区.
  • 可能还有一些其他Django或Python特定的库,我在5分钟内没有找到我在Google上搜索的内容.