You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:24:03