【问题标题】:How to get time zone by passing city and country?如何通过城市和国家获得时区?
【发布时间】:2013-07-28 11:17:23
【问题描述】:

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

我可以通过传递citycountry 作为参数以某种方式获得那个地方的timezone

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

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

【问题讨论】:

标签: python django timezone pytz


【解决方案1】:

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

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

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

然后在此处描述的服务之一中使用坐标:How to get a time zone from a location using latitude and longitude coordinates?

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

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

其他想法

  • 您可以使用GeoDjango 和时区地图数据found here
  • 您可以查看 Django-GeoNames 并查看 GeoNames 中的时区是否包括在内。
  • 可能还有一些其他 Django 或 Python 特定的库正是我在 5 分钟内搜索 Google 时没有找到的。

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多