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
使用 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
这会起作用
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"))
我有这样的字符串:
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
使用 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
这会起作用
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"))