在Django中显示准确的当前时间和日期的最佳方法是什么?

时间:2009-05-04 18:43:35

标签: django

目前我的方法涉及创建上下文处理器 然后包括在整个网站。但是,我注意到了 考虑夏令时变化的问题。我住在 在美国以外的BTW和我的服务器在美国,但它的 时区设置为我的。但是,因为我们没有考虑到 夏令时,它总是比我当地早一个小时 时间。

知道怎么解释这个吗?我用过timedelta -1 在过去但不知何故我不觉得这是对的 溶液

5 个答案:

答案 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,它将使用客户端计算机的日期和时间。

可能有理由你不想这样做,但我想我还是会把它扔出去。