时间字符串在使用strftime()和strptime()后不匹配

2024-09-28 22:20:42 发布

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

在Django项目中,我在数据库中存储一个Datetime字段。 我从网页中获取日期字符串,并使用日期时间.strptime()转换为datetime类型,并将其分配给datetime字段。但是当我得到字段并使用strftime来获取字符串时,却有一天休息了,为什么会发生这种情况?在

datestr = "2013-12-12";
expireDate = datetime.strptime(datestr, "%Y-%m-%d");
datamodel.time = expireDate;
datamodel.save();

# when I get the model in another method
expireDate = datamodel.time;
datestr = expireDate.strftime("%Y-%m-%d"); # I get "2013-12-11"

我想可能跟时区有关,但不知道怎么解决。请帮忙!在


Tags: 项目django字符串数据库网页getdatetimetime
1条回答
网友
1楼 · 发布于 2024-09-28 22:20:42

存储的是日期时间对象,而不仅仅是日期。这意味着时间被设置为本地时区的午夜。再次检索datetime对象会在UTC时区执行此操作,这对您来说是6小时的休息时间。在

用时区存储datetime对象:

from django.utils.timezone import utc

datestr = "2013-12-12"
expireDate = datetime.strptime(datestr, "%Y-%m-%d")
datamodel.time = expireDate.replace(tzinfo=utc)
datamodel.save()

如果您只处理日期,您还可以切换到使用^{}而不是DateTimeField

^{pr2}$

date对象没有与其关联的时区。在

相关问题 更多 >