5

我不想在我的 Web 应用程序中管理用户的不同时区,但我不知道从哪里开始。我必须将每个用户的本地时间保存在我的数据库中?或者可能将其转换为 UTC 时间,保存它,然后再次进行转换以显示它?还是有其他方法?例如,如果我的一个用户在他的当地时间预约,我必须将其转换为 UTC 将其存储在我的数据库中,然后当他需要时,将其再次转换为他的当地时间并显示它?顺便说一句,我正在使用 Django。谢谢。

4

4 回答 4

2
  1. 将日期/时间存储为 UTC(不确定 Python 命令是什么)

  2. 输出日期时,将它们包装在一个辅助函数中,该函数获取当前用户的时区偏好,然后调整偏移量的时间/日期,然后从应用程序中输出。

http://docs.python.org/library/time.html

http://docs.python.org/library/datetime.html

于 2009-11-16T23:20:42.300 回答
1

试试 Django 片段UTC DateTime 字段。实际上,它具有开箱即用的一切所需。

于 2009-11-16T23:13:29.430 回答
1

转换为 UTC 时间,保存它,然后再次转换以显示它?

是的,即使您只有一个本地时区,您通常也应该将日期作为 UTC 时间戳存储在数据库中,并在您的 webapps 输入和输出阶段将其与适当时区的文本进行转换。当您存储了每个用户的时区时,很容易将默认时区切换为自定义时区。

pytz是选择和转换时区的常用解决方案。(虽然我个人破解了我自己不那么压倒性的时区集合。)

于 2009-11-16T23:20:05.710 回答
0

IMO 使用单个“数据库时间”时区是最好的选择,因为:-

  • 它极大地简化了与不同时区的人打交道的程序
  • 它允许更轻松地转换到其他时区
  • 任何在用户视图之外看到数据的人都可以假设它是 UTC,而不必猜测一条记录的“12:45”是否是另一条记录的“12:45”
  • 标准很好

所以,是的。将用户的时区存储在数据库中,然后将所有时间存储在一个公共时间(如 UTC)。当用户查看包括时间在内的任何内容时转换它们。这是最简单的解决方案,它不仅强制所有用户假装在同一个时区。

于 2009-11-16T23:19:59.830 回答