繁体   English   中英

时区-使非UTC日期时区知道

[英]Timezone - Make non-UTC datetime timezone aware

我遇到一个CET日期CET (通过我的API)的情况,我想将其保存在django数据库中。

当我这样做时,我总是收到运行时警告:

datetime.fromtimestamp(last_content_update)

当我添加replace零件时,我没有收到错误,但是我的日期不正确(1h班次):

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

知道我该如何加载我的datetime时区吗?

谢谢!

好的,最后我发现fromtimestamp()需要一个时区参数!

像这样做:

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

这是文档的链接

您需要分两步执行此操作:

  1. 首先,使用CET(欧洲中部时间)时区,使datetime时区可识别。
  2. 其次,在保存日期时间之前将其转换为UTC。 这是因为Django将日期时间存储为UTC

启用对时区的支持后,Django将UTC中的日期时间信息存储在数据库中。

可以这样完成:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM