Python解析字符串日期[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我有这样的字符串:

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:3​​5 + 03:00'与格式'%Y-%m-%d%H不匹配:%M:%S%z'

python date iso
3个回答
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
投票

使用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)

OUTPUT:

2019-04-03 08:10:35

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"))

enter image description here

编辑:

如果计算时区,则为“+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"))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.