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

如何将12小时制字符串转换为24小时制TimeOfDay/DateTime格式?

刚好之前做过类似的时间格式转换需求,其实不用自己手动判断AM/PM写逻辑,直接用语言自带的日期时间处理工具就能完美解决,给你两种常用语言的实现方案:

C# 实现方案

1. 将"6:45AM"转换为TimeOfDay/DateTime

用DateTime.ParseExact方法指定对应格式解析,就能直接得到DateTime对象,再提取TimeOfDay即可:

using System;
using System.Globalization;

class TimeConverter
{
    static void Main()
    {
        // 处理AM时间
        string amTimeStr = "6:45AM";
        // 格式"h:mmtt":h是12小时制小时,mm是分钟,tt是AM/PM标识
        DateTime amDateTime = DateTime.ParseExact(amTimeStr, "h:mmtt", CultureInfo.InvariantCulture);
        TimeSpan amTimeOfDay = amDateTime.TimeOfDay; // 这就是你需要的TimeOfDay格式
        
        Console.WriteLine(amTimeOfDay); // 输出 06:45:00
    }
}

2. 将"6:45PM"转换为"18:45:00"

解析后用ToString指定24小时制格式"HH:mm:ss"(大写H代表24小时制)即可:

// 处理PM时间
string pmTimeStr = "6:45PM";
DateTime pmDateTime = DateTime.ParseExact(pmTimeStr, "h:mmtt", CultureInfo.InvariantCulture);
string pm24HourStr = pmDateTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture);

Console.WriteLine(pm24HourStr); // 输出 18:45:00
Python 实现方案

1. 将"6:45AM"转换为时间对象(对应TimeOfDay)

用datetime模块的strptime方法解析,提取time()属性就是类似TimeOfDay的对象:

from datetime import datetime

# 处理AM时间
am_time_str = "6:45AM"
# 格式"%I:%M%p":%I是12小时制小时,%M是分钟,%p是AM/PM标识
am_datetime = datetime.strptime(am_time_str, "%I:%M%p")
am_time_of_day = am_datetime.time()

print(am_time_of_day) # 输出 06:45:00

2. 将"6:45PM"转换为"18:45:00"

用strftime方法指定"%H:%M:%S"格式(大写H代表24小时制):

# 处理PM时间
pm_time_str = "6:45PM"
pm_datetime = datetime.strptime(pm_time_str, "%I:%M%p")
pm_24hour_str = pm_datetime.strftime("%H:%M:%S")

print(pm_24hour_str) # 输出 18:45:00

小提示

  • 注意格式字符串的大小写:不管是C#还是Python,12小时制和24小时制的格式符大小写是有区别的,别搞混了。
  • 如果要做健壮性处理,C#可以用DateTime.TryParseExact避免格式错误崩溃;Python可以加try-except块捕获解析异常。

内容的提问来源于stack exchange,提问作者Sanket

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:10:09