当前位置: 首页 > 面试题库 >

无法比较原始日期时间和感知日期时间。now()<=challenge.datetime\u end

谷弘致
2023-03-14
问题内容

我正在尝试使用比较运算符将当前日期和时间与模型中指定的日期和时间进行比较:

if challenge.datetime_start <= datetime.now() <= challenge.datetime_end:

该脚本错误如下:

TypeError: can't compare offset-naive and offset-aware datetimes

这些html" target="_blank">模型如下所示:

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?


问题答案:

默认情况下,该datetime对象naive位于Python中,因此你需要将它们都设为天真或感知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

注意:这将引发一个ValueErrorif tzinfo值。如果你不确定,请使用

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)


 类似资料:
  • 问题内容: 我正在将应用程序从Django 1.2迁移到1.4。 我有一个日常任务对象,其中包含一天中应该完成任务的时间: 为了检查是否仍然需要今天完成一项任务,我有以下代码: 在1.2下可以正常工作,但是在1.4下我会收到错误消息: 由于线 并且两个比较子句都会引发此错误。 我尝试通过添加pytz.UTC作为参数来使timeDue时区知道,但这仍然会引发相同的错误。 我已经阅读了一些有关时区的文

  • 问题内容: 我正在使用moment.js格式化我的日期时间,这里有两个日期值,当一个日期大于另一个日期时,我想实现一种特定的功能。我阅读了他们的大多数文档,但没有找到实现此目的的功能。我知道会在那里。 这是我的代码: 编辑 在这里,我正在比较两个日期,即,期望第一个日期大于第二个日期,但是它总是转到else条件。不知道为什么 问题答案: 我相信你正在寻找的查询功能,,,和。 但是要确切地说出您要尝

  • 我正在使用moment.js格式化我的日期时间,这里我有两个日期值,当一个日期大于另一个时,我想实现一个特定的函数。我读了他们的大部分文档,但没有找到实现这一点的函数。我知道它会在那里。 这是我的代码: 编辑 在这里,我比较了两个日期,即,希望第一个日期大于第二个日期,但它总是转到else条件。我不知道为什么?

  • 问题内容: 这是我正在尝试执行的一些代码片段: 我似乎无法比较日期和日期时间值。比较这些的最佳方法是什么?我应该将日期时间转换为日期还是相反?我如何在它们之间转换。 (一个小问题,但似乎有点令人困惑。) 问题答案: 使用该方法将日期时间转换为日期: 或者,您可以使用代替。你可以用 消除之后的时间部分。

  • 问题内容: 如何在Java中比较没有时间的日期? 此代码比较时间和日期! 问题答案: 尝试比较将时间更改为00:00:00的日期(使用此功能):

  • 我有个约会‘2019-05-08t 22:15:00-0400’。我想将这个日期与当前的日期和时间进行比较。如果上述日期和时间小于当前日期和时间,那么我必须做些什么。 我的代码是:- 但它返回 false 。