我有以下代码:
var thursday = new CultureInfo("es-ES").DateTimeFormat.AbbreviatedDayNames[4];
Run Code Online (Sandbox Code Playgroud)
如预期的那样返回"ju.".
我刚刚继承了一些非常古老的代码,它有测试代码,期望值为"jue"...
我在想 - 在.Net框架中有没有改变过?
编辑1 - 扩展:
我正在使用.Net 4.5 ...我有一台最近安装的Visual Studio 2013机器,没有任何异常安装.
var format = new CultureInfo("es-ES").DateTimeFormat;
Console.WriteLine("AbbreviatedDayNames:");
foreach (var name in format.AbbreviatedDayNames)
{
Console.WriteLine(name);
}
Console.WriteLine("ShortestDayNames:");
foreach (var name in format.ShortestDayNames)
{
Console.WriteLine(name);
}
Run Code Online (Sandbox Code Playgroud)
输出:
AbbreviatedDayNames:
do.
lu.
ma.
mi.
ju.
vi.
sá.
ShortestDayNames:
D
L
M
X
J
V
S
Run Code Online (Sandbox Code Playgroud)
编辑2 - 我的机器是英国英语,虽然如果我将文化指定为"es-ES",我不明白为什么会这么重要?
编辑3 - 很奇怪:
https://dotnetfiddle.net/ - 返回ju.
http://www.compileonline.com/compile_csharp_online.php - 返回jue
CalendarData 对象在获取日历数据时进行 C# 到 C++ 转换,以从操作系统获取日历信息。
操作系统版本和数组中值的设置差异可能是造成此问题的原因,而不是实际的 .NetFX 更改。
您可以参考 C# 框架代码:http://www.dotnetframework.org/default.aspx/4@0/4@0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/clr/src/BCL/System/Globalization/ CalendarData@cs/1305376/CalendarData@cs并注意托管到本机包含的方法。