时区生成非UTC日期时间时区

2024-03-29 01:11:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个例子,我得到一个CET日期时间(通过我的API),我想把它保存在我的django数据库中。你知道吗

当我这样做时,我总是得到一个运行时警告:

datetime.fromtimestamp(last_content_update)

当我添加replace部分时,我没有得到错误,但我的日期不正确(1h班次):

datetime.fromtimestamp(last_content_update).replace(tzinfo=utc)

你知道我怎么加载我的日期时间时区感知吗?你知道吗

谢谢!你知道吗


Tags: djangoapi数据库警告datetime错误时间update
2条回答

您需要分两步进行:

  1. 首先,让datetime时区有意识-在你的例子中,使用CET(中欧时间)时区。你知道吗
  2. 其次,在保存日期时间之前,将其转换为UTC。这是因为Django stores datetimes as UTC

When support for time zones is enabled, Django stores datetime information in UTC in the database...

可以这样做:

import pytz    
from django.utils import timezone

# Convert the naive datetime into a CET datetime
local_datetime = timezone.make_aware(naive_datetime, pytz.timezone('CET'))

# Convert the CET datetime to UTC
utc_datetime = local_datetime.astimezone(timezone.utc)

# Now it can be saved in the database on a model field
MyDateModel.objects.create(title='Another date model',
                           created=utc_datetime)

好的,最后我发现fromtimestamp()带有一个时区参数!你知道吗

就这样做吧:

datetime.fromtimestamp(last_content_update, tz=pytz.timezone("Europe/Paris"))

Here is a link到文档。你知道吗

相关问题 更多 >