python比较日期时间,关于datetime:Python:如何比较两个日期/时间?

我有以下两个日期/时间,分别是date_time1和date_time2:

2017-04-15 00:00:00

2017-04-17 15:35:19+00:00

parsed1 = dateutil.parser.parse(date_time1)

parsed2 = dateutil.parser.parse(date_time2)

如果我收到另一个叫input_date_time的日期/时间(如2017-04-16 12:11:42+00:00),我会想做以下事情:

#    Would like to check if `input_date_time` is within the range

if parsed1 <= input_date_time <= parsed2:

有一个错误:TypeError: can't compare offset-naive and offset-aware datetimes。

想把它分解为年、月、日、时、分和秒,然后比较每一个。

正确的方法是什么?

你试过你建议的代码了吗?它起作用了吗?你会犯什么错误?

可能重复的无法比较naive和aware datetime.now()<=challenge.datetimeu end

@丹尼尔罗斯曼得到了埃多克斯1〔0〕。

问题是其中一个有时区,另一个没有。如果您想假设它们在同一个时区,只需将已知时区设置为None。

@保罗,我怎么能这样做?input_date_time是本地时区的意识。怎样才能使parsed1和parsed2意识到?

这是我再版的例子。我想我们应该为每一个日期对象提供时间区数据假设日期是本地时间。我想我们应该在日期之前添加时间区数据,1 Instead of clear other tzinfo(我的第一个例子)

ZZU1

如果输入在parsed1和parsed2之间

这不会转换时间,只会删除信息。这样比较就不正确了。

多谢了,奥兰吉多。我已经修好了。

你只需要1〔1〕就可以了。你确定localize在这里做的是正确的吗?

好的,我刚修好。假设日期时间1是本地时间。这将比前一个更好。

在你的例子中,你需要给天真的日期对象(EDOCX1&2)一个时间区(以使它知道)或将原来的日期对象(EDOCX1&3)转换为一个天真的对象(以你为例),而日期是要比较的。然后你的伤寒就会消失

自从你的第二个日期有+00:00的时间带以来,输入的日期也有+00:00的时间带,让我们在出生的第一个日期(假设这是正确的时间带),然后把它转换成你需要的任何时间带(如果UTC是正确的话,你可以滑雪,隔间现在就要工作。)

parsed1 = dateutil.parser.parse(date_time1)

parsed2 = dateutil.parser.parse(date_time2)

# make parsed1 timezone aware (UTC)

parsed1 = parsed1.replace(tzinfo=pytz.utc)

现在你的对比应该工作。如果你想在任何日期指定另一时间段,可以使用astimezone函数。Lets change the timezone to that applicable to Sydney,Australia.这是一份时区清单https://gist.github.com/heyalexej/8BF688FD67D7199Be4A1682B3EEC7568

syd_tz = pytz.timezone('Australia/Sydney')

syd_parsed1 = parsed1.astimezone(syd_tz)

现在你可以用%z和%z来检查时间区对你的每一个日期对象的应用。Will print it in the local time format as will %xand %xUsing Python3+:

print("Local time: %s" % syd_parsed1.strftime('%c'))

print("Offset-Timezone-Date-Time: %s" % syd_parsed1.strftime("%z-%Z-%x-%X))

希望时区功能能帮助我,当我第一次使用时,当我不知道%c

假设你有Python的日期Python的两个物体可以与"signs作比较。

你不必把他们比作对比You don't need to parse them to compare them.

if date_time1 <= input_date_time <= datetime_2:

#do work

如果你没有日期对象,那么在日期类中也有一种被称为日期的方法,这将使你能够创建日期对象,如果你发现它是有用的。

得到以下错误:TypeError: can't compare offset-naive and offset-aware datetimes。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值