Python-Django 时区工作不正常
Python-Django timezone is not working properly
我正在开发基于 Django 的网站。我正在尝试显示正确的时区和时间。但它不能正常工作。我住在德克萨斯州的达拉斯。所以我的默认时区是 'America/Chicago'.
我的 settings.py 文件有这些代码行。
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我安装了 datetime 和 pytz。所以当我试图在数据库中节省时间时,我的代码是,
from datetime import datetime
import pytz
utc = pytz.utc
database = Database.objects.get(id=1)
databas.time = utc.localize(datetime.now())
database.save()
所以当我检查数据库时,更新时间是 2015-10-20 23:13:04
而不是2015-10-20 18:13:04
当我通过下面的代码在模板中打印出来时,我得到了这个输出Oct. 20, 2015, 1:13 p.m.
{{ database.time|localtime }}
我很困惑如何使用 datetime、pytz 和所有工具来获得准确的时间以及 settings.py 文件。
我想做的是节省UTC时间。但是当我打印出来时,我想根据用户获取访问者的时区和打印时间。我的网站目前只能在美国访问。我的模型有
time = models.DateTimeField(auto_now_add=True)
它节省了一些不同的时间。我有另一个模型,其中有一个名为 expire time 的列,我在其中使用以下代码进行保存,
expire_time = utc.localize(datetime.now()+ timedelta(hours=24))
表示我想在 24 小时后过期 link。但是这个时区让我感到困惑。谁能帮我?我不知道我应该在我的代码中使用什么来获得正确的时区。
如果您设置 USE_TZ = True
Django 以 UTC 格式存储日期时间。使用以下命令创建时区感知 datetime.now
:
from django.utils import timezone
from datetime import timedelta
database.time = timezone.now()
expire_time = timezone.now() + timedelta(hours=24)
然后您可以使用 activate()
将当前时区设置为最终用户的实际时区。
查看 "Selecting the current time zone" 以查看用户如何 select 他的时区以及如何使用此 selection 激活他的时区的示例。
我正在开发基于 Django 的网站。我正在尝试显示正确的时区和时间。但它不能正常工作。我住在德克萨斯州的达拉斯。所以我的默认时区是 'America/Chicago'.
我的 settings.py 文件有这些代码行。
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我安装了 datetime 和 pytz。所以当我试图在数据库中节省时间时,我的代码是,
from datetime import datetime
import pytz
utc = pytz.utc
database = Database.objects.get(id=1)
databas.time = utc.localize(datetime.now())
database.save()
所以当我检查数据库时,更新时间是 2015-10-20 23:13:04
而不是2015-10-20 18:13:04
当我通过下面的代码在模板中打印出来时,我得到了这个输出Oct. 20, 2015, 1:13 p.m.
{{ database.time|localtime }}
我很困惑如何使用 datetime、pytz 和所有工具来获得准确的时间以及 settings.py 文件。
我想做的是节省UTC时间。但是当我打印出来时,我想根据用户获取访问者的时区和打印时间。我的网站目前只能在美国访问。我的模型有
time = models.DateTimeField(auto_now_add=True)
它节省了一些不同的时间。我有另一个模型,其中有一个名为 expire time 的列,我在其中使用以下代码进行保存,
expire_time = utc.localize(datetime.now()+ timedelta(hours=24))
表示我想在 24 小时后过期 link。但是这个时区让我感到困惑。谁能帮我?我不知道我应该在我的代码中使用什么来获得正确的时区。
如果您设置 USE_TZ = True
Django 以 UTC 格式存储日期时间。使用以下命令创建时区感知 datetime.now
:
from django.utils import timezone
from datetime import timedelta
database.time = timezone.now()
expire_time = timezone.now() + timedelta(hours=24)
然后您可以使用 activate()
将当前时区设置为最终用户的实际时区。
查看 "Selecting the current time zone" 以查看用户如何 select 他的时区以及如何使用此 selection 激活他的时区的示例。