作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用比较运算符将当前日期和时间与模型中指定的日期和时间进行比较:
if challenge.datetime_start <= datetime.now() <= challenge.datetime_end:
脚本错误:
TypeError: can't compare offset-naive and offset-aware datetimes
模型如下所示:
class Fundraising_Challenge(models.Model):
name = models.CharField(max_length=100)
datetime_start = models.DateTimeField()
datetime_end = models.DateTimeField()
我也有使用语言环境日期和时间的 django。
我找不到的是 django 用于 DateTimeField() 的格式。是天真还是有意识?以及如何让 datetime.now() 识别语言环境日期时间?
最佳答案
默认情况下,datetime
对象在 Python 中是 naive
,因此您需要将它们都设为 naive 或可感知的 datetime
对象。这可以使用:
import datetime
import pytz
utc=pytz.UTC
challenge.datetime_start = utc.localize(challenge.datetime_start)
challenge.datetime_end = utc.localize(challenge.datetime_end)
# now both the datetime objects are aware, and you can compare them
注意:如果 tzinfo
已经设置,这将引发 ValueError
。如果您不确定,请使用
start_time = challenge.datetime_start.replace(tzinfo=utc)
end_time = challenge.datetime_end.replace(tzinfo=utc)
顺便说一句,您可以在 datetime.datetime 对象中使用时区信息格式化 UNIX 时间戳,如下所示
d = datetime.datetime.utcfromtimestamp(int(unix_timestamp))
d_with_tz = datetime.datetime(
year=d.year,
month=d.month,
day=d.day,
hour=d.hour,
minute=d.minute,
second=d.second,
tzinfo=pytz.UTC)
关于python - 无法比较天真和有意识的 datetime.now() <= challenge.datetime_end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15307623/
我正在尝试使用比较运算符将当前日期和时间与模型中指定的日期和时间进行比较: if challenge.datetime_start <= datetime.now() <= challenge.dat
我是一名优秀的程序员,十分优秀!