目前我的方法涉及创建上下文处理器 然后包括在整个网站。但是,我注意到了 考虑夏令时变化的问题。我住在 在美国以外的BTW和我的服务器在美国,但它的 时区设置为我的。但是,因为我们没有考虑到 夏令时,它总是比我当地早一个小时 时间。
知道怎么解释这个吗?我用过timedelta -1 在过去但不知何故我不觉得这是对的 溶液
答案 0 :(得分:5)
您在服务器上设置的时区在Django应用程序中无关紧要。 Django将根据您在settings.py中设置的TIME_ZONE变量返回时间,而不是您在服务器上设置的内容。例如,一台服务器可以为多个支持Django的站点提供服务,每个站点都有一个单独的时区设置。
请参阅:http://docs.djangoproject.com/en/dev/ref/settings/#time-zone。
请确保将TIME_ZONE变量设置为Zoneinfo名称(即America / Belize),而不仅仅是GMT-6,因为这不会考虑夏令时。使用Zoneinfo名称,Django将返回当时的夏令时识别版本。所以正确设置,你应该能够在Django应用程序中获得你想要的时区。
{% now h:ia %}
那将以早上9:30的格式返回时间。
答案 1 :(得分:1)
如果服务器设置为您的时区,并且您希望在时区中显示时间,则应该能够使用以下内容:
{% now M d, Y h-ia %}
给出类似的东西:2009年1月23日9:21 a.m。
请参阅http://docs.djangoproject.com/en/dev/ref/templates/builtins/
答案 2 :(得分:1)
使用Django 1.4,您现在可以使用django.utils.timezone设置给定用户的当前时区
答案 3 :(得分:0)
听起来,虽然时间设定为你的时间,但时区不是。
如果这是Linux服务器,则时区由文件/etc/localtime
这实际上是指向/usr/share/zoneinfo
中某个时区文件的符号链接。默认值可能类似于/usr/share/zoneinfo/America/New_York
,但您可以通过执行以下操作将其更改为/usr/share/zoneinfo/America/Belize
*:
ln -sf /usr/share/zoneinfo/America/Belize /etc/localtime
如果您使用的是其他* nix操作系统,位置会略有不同。例如,Solaris在/usr/share/lib/zoneinfo
这假设您在计算机上具有root访问权限,因为您可以更改系统时钟。
*您的位置在您的个人资料中列为伯利兹,以防您想知道我在哪里。
答案 4 :(得分:0)
如果您只关心在客户端显示日期和时间,您可以使用Javascript,它将使用客户端计算机的日期和时间。
可能有理由你不想这样做,但我想我还是会把它扔出去。