为Django用户使用地理数据自定义时区
我正在开发一个Django应用,需要根据用户的情况报告当地时间。我希望不直接让用户输入时区,因为我在数据库中已经存储了他们的地址。我只考虑美国的用户。由于美国大部分州只在一个时区内,所以根据州的信息来计算时区在大多数情况下是可行的。我想创建一个函数,输入州名或地理信息,然后返回该州相对于协调世界时(UTC)的时间偏移量,同时考虑夏令时的影响。
有没有适合Python的库可以做到这一点?
3 个回答
0
我不太确定这个信息有多可靠,但在Django中,HTTP请求被封装在一个叫做request
的对象里,这个对象有一个TZ
头部,它显示了客户端的时区。
>>> request.META['TZ']
'Europe/London'
0
正如Andre Miller所说,时区并不是和州绑定在一起的。其实用邮政编码会更好,因为有些城市跨越了时区的界限。
市面上有一些数据库可以购买,它们把邮政编码和时区对应起来。我找到一个包含UTC时差和夏令时信息的数据库:
我之前没有处理过时区的事情,但我用过这种数据库来获取经纬度信息。数据是会变化的,所以你需要每年更新几次数据库。
顺便说一下,如果有人知道类似的免费数据库,请分享一下:我觉得这对大家会很有帮助。
3
我不太确定有没有这样的库。美国每个州并不只有一个时区。
你可以看看这里:美国各州的时区列表
很多州有多个时区。
我想你还是可以用那个列表,选择大部分州使用的时区,然后如果用户的时区不同的话,可以让他们自己调整。