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

无法比较幼稚和知道的datetime.now()<= Challenge.datetime_end

戚高洁
2023-03-14
问题内容

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

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?


问题答案:

默认情况下,该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

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

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)


 类似资料:
  • 我正在看一看大型矩阵乘法,并运行以下实验以形成一个基线测试: null 以下是Octave/MATLAB实现: 运行: hood下的Octave正在使用BLAS(我假设函数) 有人能解释这种差别吗?BLAS实现的体系结构到底是什么?我看到它在使用Fortran,但是在CPU级别上发生了什么呢?它用的是什么算法?它是如何使用CPU缓存的?它调用什么x86-64机器指令?(是使用AVX这样的高级CPU

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

  • 我需要添加什么才能通过maven使用teiid admin 我一定是做错了什么,因为我无法将Teiid admin添加到我的项目中,因为pom祖先会消失在一个未发布的存储库中。这看起来对吗? 看到错误了吗

  • 我有一个datagridview,其中包含一些学生的信息,我想筛选数据,以便只显示birthdate大于datetimePicker1且小于datetimePicker2的学生,这些学生是以前在我的表单中创建的。这是我的应用SqlDataAdapter的代码,但它根本不起作用: *bdate是我数据库中包含学生出生日期的列。任何人都可以帮忙,非常感谢。

  • 嗨,我是贾维斯的新手。 我有一个实体,我正在为它实现一个自定义比较器,以便使用Javers进行比较。 我的实体:- 包装com.devyansh.entity; 进口java.util.清单; 导入组织。贾维斯。果心元模型。注释。实体 下面我注册了新的比较器:- 我的比较器实现:- 问题领域:- 每当我尝试使用以下行进行比较时:- Diff Diff=标枪。比较(new Ent(“aaa”,new

  • 我读到这些方法返回值的规则是,对于obj1.compareTo(ob2),例如,如果ob2在层次结构中位于ob1之下,则返回值为负值,如果它位于ob1之上,则返回值为正(如果它等于,则返回值为0)。然而,在我的类中,我看到了使用Math.signum在compareTo方法中获得-1(表示负值)和1(表示正值)的示例。 有什么原因吗? 编辑: 以下是我的意思: