Python 解析字符串日期

Python parse string date

我有这样的字符串:

2019-04-03 05:10:35+03:00

我需要这样输出日期:

2019-04-03 08:10:35

我的代码:

print(datetime.strptime(str("2019-04-03 05:10:35+03:00"), "%Y-%m-%d %H:%M:%S%z"))

但我有错误:

ValueError: time data '2019-04-03 05:10:35+03:00' does not match format '%Y-%m-%d %H:%M:%S%z'

问题是您输入的字符串格式不正确。 %z 需要格式为 +HHMM-HHMM 的字符串;你有一个额外的 :.

因此,您可以使用正则表达式对其进行格式化:

import re

source = '2019-04-03 05:10:35+03:00'
formatted = re.sub(r'([+-])(\d\d):(\d\d)', r'', source)

print(datetime.strptime(formatted, "%Y-%m-%d %H:%M:%S%z").astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S"))

输出:

2019-04-03 02:10:35

使用 datetimesplit() 进行 str 操作:

假设是 + 小时:

from datetime import datetime, timedelta

dt_1 = "2019-04-03 05:10:35+03:00"
date_ = dt_1.split("+")[0]
time_ = date_.split(" ")[1]
to_add = dt_1.split("+")[1]

d = datetime.strptime(date_, "%Y-%m-%d %H:%M:%S")
t = datetime.strptime(time_, "%H:%M:%S")
d += timedelta(hours=int(to_add.split(":")[0]), minutes=int(to_add.split(":")[1]))

print(d)

输出:

2019-04-03 08:10:35

这会起作用

from datetime import datetime

your_date = datetime.strptime("2019-04-03 05:10:35+03:00", "%Y-%m-%d %H:%M:%S%z")

print(your_date.strftime("%Y-%m-%d %H:%M:%S"))

编辑:

如果你计算时区,你有“+03:00”,如果你想把它添加到你的结果中,这样做:

from datetime import datetime
your_date = datetime.strptime("2019-04-03 05:10:35+03:00", "%Y-%m-%d%H:%M:%S%z")
print((your_date + timedelta(0, your_date.tzinfo.utcoffset(your_date).seconds)).strftime("%Y-%m-%d %H:%M:%S"))