.Net 5 日本文化月份缩写
.Net 5 Japanese culture month abbreviation
我正在使用 .Net 5.0.403 来格式化日本日期,但我在两个主机上得到了不同的值。我是运行以下代码:
using System;
using System.Globalization;
var locale = new CultureInfo("ja-JP");
CultureInfo.CurrentCulture = locale;
var formatted = DateTime.Now.ToString("dd MMM yyyy H:mm");
Console.WriteLine(formatted);
Console.WriteLine("Month abbreviations:");
foreach (var month in locale.DateTimeFormat.AbbreviatedMonthNames)
Console.WriteLine("* {0}", month);
在本地给出输出:
09 11月 2021 16:21
Month abbreviations:
* 1月
* 2月
* 3月
* 4月
* 5月
* 6月
* 7月
* 8月
* 9月
* 10月
* 11月
* 12月
*
但是,当 运行 在具有 Windows 2019 的构建服务器上时,我得到以下输出:
09 11 2021 16:22
Month abbreviations:
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
* 10
* 11
* 12
*
似乎 MMM
格式字符串对应于构建服务器上的不同值。是否可以在主机上设置任何配置选项来控制它?
这是由 .net 5 中包含 ICU 库引起的。它依赖于主机上可用的版本,并且这可能因环境而异。此错误 https://github.com/dotnet/runtime/issues/60845 中对此进行了详细说明。解决方案是通过将以下内容添加到正在执行的程序集的 csproj 文件中,嵌入一个固定版本的 ICU 库以供在所有环境中使用:
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.6" />
<PackageReference Include="Microsoft.ICU.ICU4C.Runtime" Version="68.2.0.6" />
</ItemGroup>
这指的是应用程序本地 ICU,并在此处进一步记录:https://docs.microsoft.com/en-us/dotnet/core/extensions/globalization-icu#app-local-icu
我正在使用 .Net 5.0.403 来格式化日本日期,但我在两个主机上得到了不同的值。我是运行以下代码:
using System;
using System.Globalization;
var locale = new CultureInfo("ja-JP");
CultureInfo.CurrentCulture = locale;
var formatted = DateTime.Now.ToString("dd MMM yyyy H:mm");
Console.WriteLine(formatted);
Console.WriteLine("Month abbreviations:");
foreach (var month in locale.DateTimeFormat.AbbreviatedMonthNames)
Console.WriteLine("* {0}", month);
在本地给出输出:
09 11月 2021 16:21
Month abbreviations:
* 1月
* 2月
* 3月
* 4月
* 5月
* 6月
* 7月
* 8月
* 9月
* 10月
* 11月
* 12月
*
但是,当 运行 在具有 Windows 2019 的构建服务器上时,我得到以下输出:
09 11 2021 16:22
Month abbreviations:
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
* 10
* 11
* 12
*
似乎 MMM
格式字符串对应于构建服务器上的不同值。是否可以在主机上设置任何配置选项来控制它?
这是由 .net 5 中包含 ICU 库引起的。它依赖于主机上可用的版本,并且这可能因环境而异。此错误 https://github.com/dotnet/runtime/issues/60845 中对此进行了详细说明。解决方案是通过将以下内容添加到正在执行的程序集的 csproj 文件中,嵌入一个固定版本的 ICU 库以供在所有环境中使用:
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.6" />
<PackageReference Include="Microsoft.ICU.ICU4C.Runtime" Version="68.2.0.6" />
</ItemGroup>
这指的是应用程序本地 ICU,并在此处进一步记录:https://docs.microsoft.com/en-us/dotnet/core/extensions/globalization-icu#app-local-icu