为Django用户使用地理数据自定义时区

2 投票
3 回答
662 浏览
提问于 2025-04-15 14:54

我正在开发一个Django应用,需要根据用户的情况报告当地时间。我希望不直接让用户输入时区,因为我在数据库中已经存储了他们的地址。我只考虑美国的用户。由于美国大部分州只在一个时区内,所以根据州的信息来计算时区在大多数情况下是可行的。我想创建一个函数,输入州名或地理信息,然后返回该州相对于协调世界时(UTC)的时间偏移量,同时考虑夏令时的影响。

有没有适合Python的库可以做到这一点?

3 个回答

0

我不太确定这个信息有多可靠,但在Django中,HTTP请求被封装在一个叫做request的对象里,这个对象有一个TZ头部,它显示了客户端的时区。

>>> request.META['TZ']
'Europe/London'
0

正如Andre Miller所说,时区并不是和州绑定在一起的。其实用邮政编码会更好,因为有些城市跨越了时区的界限。

市面上有一些数据库可以购买,它们把邮政编码和时区对应起来。我找到一个包含UTC时差和夏令时信息的数据库:

美国5位数邮政编码数据库,带有时区信息。

我之前没有处理过时区的事情,但我用过这种数据库来获取经纬度信息。数据是会变化的,所以你需要每年更新几次数据库。

顺便说一下,如果有人知道类似的免费数据库,请分享一下:我觉得这对大家会很有帮助。

3

我不太确定有没有这样的库。美国每个州并不只有一个时区。

你可以看看这里:美国各州的时区列表

很多州有多个时区。

我想你还是可以用那个列表,选择大部分州使用的时区,然后如果用户的时区不同的话,可以让他们自己调整。

撰写回答