用Python减去日期时间,了解格式

时间:2019-09-10 15:57:54

标签: python datetime

鉴于我有一个时间戳记:

date_time_str = '2019-09-10T13:48:06+0200'

如何计算当前时间与该日期时间之间的时差?

到目前为止,我的印象是严重的不法行为-这应该可以以一种简单得多的方式实现:

from datetime import datetime, timezone
import time

date_time_str = '2019-09-10T13:48:06+0200'
format = '%Y-%m-%dT%H:%M:%S%z'
date_time_obj = datetime.strptime(date_time_str, format)

now = datetime.now()
now_time = now.strftime(format)
print(now_time)


now=datetime.strptime(datetime.fromtimestamp(int(time.time()), tz=timezone.utc).isoformat(), format)
print("now is: %s" % now)

print(now-time_obj)

以上程序无法正常运行,因为当前时间格式略有不同:

'2019-09-10T15:56:11+00:00'

也就是说,如果您运行上述脚本(例如Python 3.6.5),则会出现错误:

ValueError: time data '2019-09-10T18:18:09+00:00' does not match format '%Y-%m-%dT%H:%M:%S%z'

不匹配的时区格式为“ +00:00”与“ +0200”。

1 个答案:

答案 0 :(得分:1)

您可以使用datetime.now()在utc中获取当前日期时间:

# Same as your code
from datetime import datetime, timezone

date_time_str = '2019-09-10T13:48:06+0200'
format = '%Y-%m-%dT%H:%M:%S%z'
date_time_obj = datetime.strptime(date_time_str, format)

# Added:
print(datetime.now(tz=timezone.utc))
# 2019-09-10 18:35:48.066548+00:00

print(datetime.now(tz=timezone.utc) - date_time_obj)
# 6:47:42.066548
相关问题