我有两个约会
'2017-03-10 19:01:27'
'2017-03-11 07:35:55'
我希望有一天能有所作为。我如何在考虑时区的情况下做到这一点?
因为我们不知道这些日期的时区。我是Python的新手
我有:
from_zone = tz.tzutc()
to_zone = tz.tzlocal()
date_first = datetime.strptime(args[0], time_format)
date_second = datetime.strptime(args[1], time_format)
rep_date_first = date_first.replace(tzinfo=from_zone)
rep_date_second = date_second.replace(tzinfo=from_zone)
timezone_date_first = rep_date_first.astimezone(to_zone)
timezone_date_second = rep_date_second.astimezone(to_zone)
day = timezone_date_first.day - timezone_date_second.day
天回报我0,如何解决?请帮帮我
答案 0 :(得分:0)
通过更改时区,您可能会在相同的日期添加或减去足够的时间到您的日期。当你从字符串中转换它们时,你应该假设一个时区 - 或者只是让它们保留天真的日期时间对象。
>>> d1 = '2017-03-10 19:01:27'
>>> d2 = '2017-03-11 07:35:55'
>>> date_first = datetime.strptime(d1, '%Y-%m-%d %H:%M:%S')
>>> date_second = datetime.strptime(d2, '%Y-%m-%d %H:%M:%S')
>>> date_first.day
10
>>> date_second.day - date_first.day
1
答案 1 :(得分:0)
arrow
模块是每个处理日期的人的大朋友,你很容易实现转变。
import arrow
dt = arrow.get('2017-03-10 19:01:27')
dt = dt.replace(tzinfo='Europe/Warsaw')
dt2 = dt.shift(days=-1)
assert dt2.isoformat() == '2017-03-09T19:01:27+01:00'
你在问什么有点不确定:I would like to get the difference one day
并且你的代码不能孤立地运行(args[0]
),但我认为你可以假设日期在同一时区。