将ISO时间转换为python中的人类可读时间。

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

我使用的是python.我的时间格式是这样的。

2020-05-23T06:35:11.418279Z #May 23, 2020 at 12:05:11 PM GMT+05:30

我想转换成人类可读的时间,如

23-05-2020 12:05 PM

我也试了一下解析器,但是没有效果。

谁能帮我解决这个问题?

先谢谢你:)

python datetime epoch strptime strftime
2个回答
1
投票
import datetime, pytz
isodate = '2020-05-23T06:35:11.418279Z'
d = datetime.datetime.fromisoformat(isodate[:-1]).replace(tzinfo=pytz.utc) # we need to strip 'Z' before parsing
print(d.astimezone(pytz.timezone('Asia/Kolkata')).strftime('%d-%m-%Y %I:%M %p'))

2
投票

不幸的是,一个字符串'2020-05-23T06:35:11.418279Z'并不完全兼容ISO 8601,所以你不能用下面的方法来解析它 内置 fromisoformat (Python 3.7+)。您可以使用 strptime 而不是使用适当的格式字符串。

from datetime import datetime
import dateutil

s = '2020-05-23T06:35:11.418279Z'

# to datetime object:
dt = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f%z')
# datetime.datetime(2020, 5, 23, 6, 35, 11, 418279, tzinfo=datetime.timezone.utc)

# change timezone to Indian Standard Time:
dt = dt.astimezone(dateutil.tz.gettz('Asia/Kolkata'))
# datetime.datetime(2020, 5, 23, 12, 5, 11, 418279, tzinfo=tzfile('Asia/Calcutta'))

s_out = dt.strftime('%Y-%m-%d %I:%M %p')
# '2020-05-23 12:05 PM'  

一个方便的替代品 datetime.strptime 是使用 dateutils parser:

dt = dateutil.parser.parse(s)
# datetime.datetime(2020, 5, 23, 6, 35, 11, 418279, tzinfo=tzutc())
© www.soinside.com 2019 - 2024. All rights reserved.