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

如何在指定CultureInfo时设置DateTime组件显示顺序且隐藏AM/PM标识

解决方案

你可以通过自定义目标文化的时间格式规则实现需求,既保留不同文化的日期排列习惯,又能输出24小时制无AM/PM的时间格式。

方法1:修改文化的时间格式配置(更简洁)

.NET 中标准格式符g对应「短日期+短时间」的组合输出,你只需要修改对应文化的ShortTimePattern为24小时制格式即可:

// 以en-GB为例
var gbCulture = new CultureInfo("en-GB");
gbCulture.DateTimeFormat.ShortTimePattern = "HH:mm";
// 直接使用g格式符输出
string gbResult = dateTimeOffset.ToString("g", gbCulture);
// 输出:23/08/2020 09:00

// 以en-US为例
var usCulture = new CultureInfo("en-US");
usCulture.DateTimeFormat.ShortTimePattern = "HH:mm";
string usResult = dateTimeOffset.ToString("g", usCulture);
// 输出:08/23/2020 09:00

这种方式的日期部分完全沿用对应文化的默认短日期规则,无需手动处理日期顺序。

方法2:动态拼接适配文化的格式串

如果不想修改文化实例的配置,可以动态生成符合当前文化规则的格式串:

public static string FormatDateTimeOffsetByCulture(DateTimeOffset date, CultureInfo culture)
{
    // 读取文化自带的短日期格式
    string datePattern = culture.DateTimeFormat.ShortDatePattern;
    // 固定使用24小时制时间格式
    const string timePattern = "HH:mm";
    return date.ToString($"{datePattern} {timePattern}", culture);
}

// 调用示例
string gbResult = FormatDateTimeOffsetByCulture(dateTimeOffset, new CultureInfo("en-GB"));
string usResult = FormatDateTimeOffsetByCulture(dateTimeOffset, new CultureInfo("en-US"));

注意:不要直接修改CultureInfo的静态默认实例,每次使用时新建或克隆实例修改,避免影响全局其他代码的日期格式化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:36:03