我有以下代码:
var thursday = new CultureInfo("es-ES").DateTimeFormat.AbbreviatedDayNames[4];
按预期返回" 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);
}
输出:
AbbreviatedDayNames:
do.
lu.
ma.
mi.
ju.
vi.
sá.
ShortestDayNames:
D
L
M
X
J
V
S
编辑2 - 我的机器是英国英语,但如果我将文化指定为" es-ES"?
我不明白为什么那会很重要编辑3 - 很奇怪:
https://dotnetfiddle.net/ - 返回ju。
http://www.compileonline.com/compile_csharp_online.php - 返回jue
答案 0 :(得分:1)
在从操作系统获取日历信息的过程中,CalendarData对象在获取日历数据时进行C#到C ++转换。
数组中值的操作系统版本和设置差异将导致这种情况,而不是实际的.NetFX更改。
您可以在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引用C#框架代码,并注意托管到本机的方法。