在西班牙的.Net框架版本中,DateTimeFormatInfo :: AbbreviatedDayNames的值是否曾发生过变化?

时间:2014-11-13 12:42:23

标签: c# .net

我有以下代码:

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

1 个答案:

答案 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#框架代码,并注意托管到本机的方法。