缩写月份名称的问题

问题描述 投票:0回答:1

看来群众已经发声了,现在九月的简写基本上就是September了

所以同时 Intl.DateTimeFormat 工作原理(我的日期选择器使用的)我的操作系统还没有收到备忘录(目前)并继续与 Sep 一起工作。

无论如何,为了解决这个问题,我添加了

CultureInfo ci = new CultureInfo("en-GB");

DateTimeFormatInfo dtfi = ci.DateTimeFormat;
dtfi.AbbreviatedMonthNames  = new  string[] {
                "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", ""
            };
dtfi.AbbreviatedMonthGenitiveNames = dtfi.AbbreviatedMonthNames;

CultureInfo.DefaultThreadCurrentCulture = ci;
CultureInfo.DefaultThreadCurrentUICulture = ci;

进入我的程序文件,这似乎确实解决了问题,并且 - 我希望当 Windows 11 出现时(对我来说)我可能不需要该代码。

我的问题是 - 这是正确的解决方案吗? 我的应用程序仅在英国使用,但我有点谨慎。我似乎创造了一种新的文化,并且基本上强迫程序使用它。

这是正确的做法吗?

c# date .net-7.0 culture
1个回答
1
投票

我无法判断这是否是正确的解决方案,这取决于您必须使用 Sept 的目的。现在 .net 使用 ICU 库 来实现全球化。 ICU 在版本 72 中将 September 的缩写从 Sep 更改为 Sept。Windows 11 上的最新版本应该是 68(您可以在 system32 文件夹中找到 icu.dll)。不过,微软最近发布了版本 72,所以也许你只需要再等一会儿就能看到 9 月了

如果您想提前体验或使用特定的ICU版本,可以编译或下载ICU dll,将其放在程序的根目录下,然后在

.runtimeconfig.json
文件中添加以下几行:

{
  "runtimeOptions": {
    "configProperties": {
      "System.Globalization.AppLocalIcu": "72"
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.