Python中如何将'23:59:05.823Z'转换为'10:00 AM'格式?
嘿,这个需求用Python的datetime模块就能轻松搞定!我给你分两种常见场景来说明,确保你能覆盖自己的使用情况:
方法一:仅格式转换(不处理时区)
如果你只需要把拿到的时间字符串转换成12小时制格式,不需要考虑时区差异(比如你确认这个时间已经是你需要的时区),可以直接解析后格式化:
from datetime import datetime # 你拆分得到的时间部分 time_str = '23:59:05.823Z' # 解析时间字符串:%H是24小时制小时,%f匹配微秒,Z直接作为字符匹配 parsed_time = datetime.strptime(time_str, '%H:%M:%S.%fZ') # 格式化为12小时制:%I是12小时制小时(01-12),%p输出AM/PM formatted_time = parsed_time.strftime('%I:%M %p') print(formatted_time) # 输出: 11:59 PM
小细节调整:
- 如果你的时间字符串没有微秒(比如
'23:59:05Z'),把解析格式改成'%H:%M:%SZ'就行 - 要是想去掉小时的前导零(比如把
09:00 AM变成9:00 AM),可以在类Unix系统用'%-%I:%M %p',Windows系统用'%#I:%M %p';或者手动处理:formatted_time = parsed_time.strftime('%I:%M %p').lstrip('0').replace(' 0', ' ')(避免把12:00变成2:00)
方法二:考虑时区转换(适配UTC转本地/指定时区)
因为Z代表UTC时间,如果你需要把它转换成本地时区或者其他时区的12小时制时间,可以结合时区模块处理:
from datetime import datetime, timezone time_str = '23:59:05.823Z' # 解析为UTC时区的时间对象 utc_time = datetime.strptime(time_str, '%H:%M:%S.%fZ').replace(tzinfo=timezone.utc) # 转换为本地时区(自动识别系统时区) local_time = utc_time.astimezone() # 或者指定具体时区(Python 3.9+可用zoneinfo模块) # from zoneinfo import ZoneInfo # local_time = utc_time.astimezone(ZoneInfo('Asia/Shanghai')) # 东八区 # 格式化输出 formatted_time = local_time.strftime('%I:%M %p') print(formatted_time) # 比如东八区会输出 07:59 AM
这样就能准确处理时区差异后的12小时制格式了~
内容的提问来源于stack exchange,提问作者Faraz Irfan




