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

.NET 7中如何让TimeOnly始终输出含秒的不变文化长时间字符串?

解决方案

要始终得到HH:mm:ss格式(包含秒的24小时制时间字符串),不受当前文化影响,你可以通过以下两种可靠方式实现:

方法一:自定义格式字符串 + InvariantCulture

直接调用ToString方法,指定固定的时间格式字符串,并传入CultureInfo.InvariantCulture作为格式化参数,这是最直接可控的方式:

using System.Globalization;

TimeOnly targetTime = new TimeOnly(15, 16, 17);
string formattedTime = targetTime.ToString("HH:mm:ss", CultureInfo.InvariantCulture);
// 无论当前系统文化是en-US还是其他,结果始终为 "15:16:17"

参数说明:

  • HH:代表24小时制的小时(取值范围00-23)
  • mm:两位数字的分钟
  • ss:两位数字的秒
  • CultureInfo.InvariantCulture:确保格式化时使用固定的、不受地域文化影响的规则(比如时间分隔符始终是冒号)

方法二:复用不变文化的长时间格式(可选)

如果你想复用预定义的"长时间"格式逻辑,也可以直接调用不变文化的格式规则:

using System.Globalization;

TimeOnly targetTime = new TimeOnly(15, 16, 17);
string formattedTime = targetTime.ToString(DateTimeFormatInfo.InvariantInfo.LongTimePattern, CultureInfo.InvariantCulture);
// 结果同样为 "15:16:17",因为不变文化的LongTimePattern默认就是"HH:mm:ss"

为什么之前的方法不适用?

  • ToLongTimeString():内部使用当前文化的长时间格式规则,不同文化(比如en-US)会返回12小时制带AM/PM的字符串,且无法指定文化参数。
  • ToString()无参数/仅传文化参数:默认使用当前文化的短时间格式,不会包含秒数,且文化参数仅切换对应地域的格式规则,无法强制显示秒。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 09:37:36