4

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

我可以通过以某种方式将and作为参数timezone传递给那个地方吗?citycountry

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

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

4

1 回答 1

7

要按城市和国家/地区解析时区,您首先需要获取纬度/经度坐标。有多种方法可以做到这一点,包括各种城市数据库、机场代码或反向地理编码地址。

请注意,世界上有些城市的部分地区遵循不同的时区。在这些情况下,您可能会有一些小的误差。看到这个帖子:2个时区可以代表1个城市吗?

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

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

一旦您有了时区 ID,例如Asia/Seoulor ,您就可以在pytzAmerica/New_York函数中使用它,正如用户 falsetru 在他的回答中所显示的那样。

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

其他想法

  • 您可以将GeoDjango与此处找到的时区地图数据一起使用。
  • 您可以查看Django-GeoNames并查看 GeoNames 中的时区是否包括在内。
  • 可能还有一些其他 Django 或 Python 特定的库正是我在 5 分钟搜索 Google 时没有找到的。
于 2013-07-28T18:03:32.037 回答