我有这样的字符串:
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:时间数据'2019-04-03 05:10:35 + 03:00'不匹配 格式为'%Y-%m-%d%H:%M:%S%z'
答案 0 :(得分:1)
问题是您输入的字符串格式不正确。 %z
的字符串格式为+HHMM
或-HHMM
;您还有一个额外的:
。
因此,您可以使用正则表达式对其进行格式化:
import re
source = '2019-04-03 05:10:35+03:00'
formatted = re.sub(r'([+-])(\d\d):(\d\d)', r'\1\2\3', 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
答案 1 :(得分:1)
使用datetime
和split()
进行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
答案 2 :(得分:1)
这将起作用
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"))