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

在C#中如何将24小时制时间(如11:10:00.000Z)转换为12小时制?

解决24小时制UTC时间转12小时制并忽略分钟的问题

你的核心需求是把带毫秒的UTC时间字符串(如11:10:00.000Z)转换为只保留小时、分钟归零的12小时制格式(如11:00 am)。当前代码的问题是仅做了格式转换,但没有对时间的分钟、秒、毫秒进行截断处理,所以会保留原时间的10分钟。

修正后的代码方案

// 解析UTC时间字符串
var parsedTime = DateTimeOffset.ParseExact(
    e.From_Time,
    "HH:mm:ss fffZ", 
    CultureInfo.InvariantCulture
).DateTime;

// 将分钟、秒、毫秒归零,仅保留日期和小时部分
var timeWithZeroMinutes = parsedTime.AddMinutes(-parsedTime.Minute)
                                   .AddSeconds(-parsedTime.Second)
                                   .AddMilliseconds(-parsedTime.Millisecond);

// 格式化为12小时制,指定区域避免差异
time = timeWithZeroMinutes.ToString("hh:mm tt", CultureInfo.InvariantCulture);

关键说明

  • 解析环节的写法是正确的,"HH:mm:ss fffZ"完全匹配输入的时间格式
  • 必须手动截断分钟、秒、毫秒:解析后的时间会保留原字符串的所有时间分量,直接格式化只会改变显示形式,不会修改时间值
  • 指定CultureInfo.InvariantCulture可以确保tt部分输出am/pm而非其他语言的上午/下午,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:04