python中的ISO时间到人类可读时间

python中的ISO时间到人类可读时间,python,datetime,epoch,strptime,strftime,Python,Datetime,Epoch,Strptime,Strftime,我正在使用python。 我的时间格式是 2020-05-23T06:35:11.418279Z #May 23, 2020 at 12:05:11 PM GMT+05:30 我想转换成人类可读的时间,就像 23-05-2020 12:05 PM 我也试过了,但没有效果 有人能帮我吗 提前感谢:另请参见 不幸的是,由于Z的原因,Python 3.7+无法直接解析字符串“2020-05-23T06:35:11.418279Z”。您可以使用strtime、or或dateutil的解析器。例: f

我正在使用python。 我的时间格式是

2020-05-23T06:35:11.418279Z #May 23, 2020 at 12:05:11 PM GMT+05:30
我想转换成人类可读的时间,就像

23-05-2020 12:05 PM
我也试过了,但没有效果

有人能帮我吗

提前感谢:

另请参见

不幸的是,由于Z的原因,Python 3.7+无法直接解析字符串“2020-05-23T06:35:11.418279Z”。您可以使用strtime、or或dateutil的解析器。例:

from datetime import datetime
import dateutil # Python 3.9+: use zoneinfo instead

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

### parsing options
# strptime
dt = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f%z')
# alternatively fromisoformat with replace (most efficient)
dt = datetime.fromisoformat(s.replace('Z', '+00:00'))
# or more convenient and less efficient:
dt = dateutil.parser.parse(s)

# 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'  
另见

不幸的是,由于Z的原因,Python 3.7+无法直接解析字符串“2020-05-23T06:35:11.418279Z”。您可以使用strtime、or或dateutil的解析器。例:

from datetime import datetime
import dateutil # Python 3.9+: use zoneinfo instead

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

### parsing options
# strptime
dt = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f%z')
# alternatively fromisoformat with replace (most efficient)
dt = datetime.fromisoformat(s.replace('Z', '+00:00'))
# or more convenient and less efficient:
dt = dateutil.parser.parse(s)

# 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'  

这回答了你的问题吗?ISO时间完全是人类可读的。然而,您的问题是您想要将时区转换为GMT+5。为此,我建议使用pytz模块。我已经尝试使用dateutil。parser@B但我不想显示t和毫秒这能回答你的问题吗?ISO时间完全是人类可读的。然而,您的问题是您想要将时区转换为GMT+5。为此,我建议使用pytz模块。我已经尝试使用dateutil。parser@Błotosmętek但我不想显示t和毫秒,它应该是%I而不是%H来获得12小时时钟。它应该是%I而不是%H来获得12小时时钟。它工作得非常好。非常感谢。但它是什么意思isodate没有最后一个字符Z,它不符合严格的ISO格式我还有一个疑问。别误会我。因为这些时间的东西让我很困惑。我们正在添加时区“亚洲/加尔各答”。假设我的客户来自美国或欧洲,则使用适当的时区。你想要GMT+05:30,那是印度时间。您可以通过printpytz查看可用时区名称列表。all_timezones它运行良好。非常感谢。但isodate[:-1]isodate[:-1]是什么意思?isodate没有最后一个字符Z,这不符合严格的ISO格式。我还有一个疑问。别误会我。因为这些时间的东西太让我困惑了。我们正在添加时区“亚洲/加尔各答”。假设我的客户来自美国或欧洲,则使用适当的时区。你想要GMT+05:30,那是印度时间。您可以通过printpytz.all\u时区检查可用时区名称的列表