在Flutter中如何将12小时制时间字符串转换为24小时制格式
12小时制时间字符串转24小时制实现方案
适用输入格式为hh:mm a.m./p.m.的字符串,输出标准HH:mm:ss格式24小时制时间。
方案1:使用语言内置时间库实现(推荐)
内置库已经处理了所有边界逻辑,不会出现自定义逻辑的判断错误,以Python为例:
from datetime import datetime def convert_12_to_24(time_str: str) -> str: # 适配输入的a.m./p.m.格式,转为标准AM/PM标识 format_input = time_str.replace('.', '').upper() # 解析12小时制时间 time_obj = datetime.strptime(format_input, '%I:%M %p') # 输出24小时制格式,秒位统一补00 return time_obj.strftime('%H:%M:00') # 测试示例 print(convert_12_to_24("02:00 p.m.")) # 输出 14:00:00 print(convert_12_to_24("12:00 a.m.")) # 输出 00:00:00 print(convert_12_to_24("11:59 a.m.")) # 输出 11:59:00 print(convert_12_to_24("12:30 p.m.")) # 输出 12:30:00
方案2:手动实现转换逻辑
如果不想依赖时间库,可以按以下逻辑实现:
- 拆分输入得到小时、分钟、上午/下午标识
- 上午(a.m.)场景:小时为12时转为0,其余小时保持不变
- 下午(p.m.)场景:小时不为12时加12,小时为12时保持不变
- 最终输出补全前导零,秒位固定为00
def convert_12_to_24_manual(time_str: str) -> str: time_part, period = time_str.split(" ") hh, mm = map(int, time_part.split(":")) if period == "a.m.": hh = 0 if hh == 12 else hh else: hh = hh + 12 if hh != 12 else hh return f"{hh:02d}:{mm:02d}:00"
内容的提问来源于stack exchange,提问作者x86
相关产品推荐
相关产品推荐

