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

.NET Core 7中瑞典文化下DateTime.ToString的MMM格式异常问题

解决瑞典文化格式化日期带点的问题

问题原因

你本地Windows 11 21H2系统的瑞典语区域设置中,月份短缩写被配置为带点格式(比如apr.),而.NET在Windows平台会优先读取系统的区域配置,而非默认的文化资源。Azure App Service使用的是标准未修改的瑞典文化定义,所以输出正常的apr。

解决方案

1. 修改系统区域设置

  • 打开Windows设置 → 时间和语言 → 语言和区域
  • 找到瑞典语条目,点击「选项」→「格式」→「其他日期、时间和区域设置」
  • 选择「更改日期、时间或数字格式」→「其他设置」
  • 切换到「日期」选项卡,找到「月份」区域的短格式设置,将带点的缩写(如apr.)改为不带点的apr,保存后重启应用即可生效。

2. 代码层面自定义日期格式

如果不想修改系统设置,可以在代码中自定义DateTimeFormatInfo,强制使用不带点的月份缩写:

var date = DateTime.UtcNow;
// 获取瑞典文化对象,建议直接使用文化名称而非LCID,更可靠
var cultureInfo = new CultureInfo("sv-SE");
// 克隆文化对象,避免修改全局默认配置
var customCulture = (CultureInfo)cultureInfo.Clone();
// 替换月份缩写数组,移除点号
customCulture.DateTimeFormat.AbbreviatedMonthNames = new[] 
{ 
    "jan", "feb", "mar", "apr", "maj", "jun", 
    "jul", "aug", "sep", "okt", "nov", "dec", "" 
};
// 同时修改所有格形式的月份缩写,保持一致
customCulture.DateTimeFormat.AbbreviatedMonthGenitiveNames = customCulture.DateTimeFormat.AbbreviatedMonthNames;

var dateString = date.ToString("dd MMM yyyy", customCulture);
Console.WriteLine(dateString);

3. 验证文化对象的来源

避免依赖LCID查找文化,直接使用new CultureInfo("sv-SE")获取标准瑞典文化,部分情况下系统自定义的LCID对应配置可能被修改,而文化名称对应的默认配置更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:17