Python中的日期时间

时间:2018-06-18 08:03:08

标签: python python-3.x datetime

我有两个约会

'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,如何解决?请帮帮我

2 个答案:

答案 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]),但我认为你可以假设日期在同一时区。