.NET和Windows文化与标准不同

3
如果我运行以下C#代码
var cultureInfo = new System.Globalization.CultureInfo("af");       
Console.WriteLine(cultureInfo.DateTimeFormat.ShortDatePattern);

我可以得到 yyyy-MM-dd 的输出结果。

然而,如果我在客户端使用 momentjs 并运行以下代码

var localeData = moment.localeData('af');
console.log(localeData._config.longDateFormat.L);

我得到的输出是DD/MM/YYYY。

它们为什么不同呢?研究表明momentjs的格式可能是正确的。如果我在客户端输入日期,然后尝试在服务器上解析它,这将是一个问题。

1个回答

3
var cultureInfo = new System.Globalization.CultureInfo("af");  

这相当于。
af-ZA   Afrikaans - South Africa    0x0436  AFK

南非的日期和时间表示法

1998年,南非通过国家标准ARP 010:1989签署使用 ISO 8601 的日期和时间表示法。最新的南非标准SANS 8601:2009“......是ISO 8601:2004的相同实现,并获得国际标准化组织的许可”,并于2016年进行了审核。

日期注释

尽管如此,旧的日期格式仍然常用于“dd/mm/yyyy”格式,其中“日月年”顺序与非数字月份指示更为普遍。


https://zh.wikipedia.org/wiki/ISO_8601

YYYY-MM-DD  or  YYYYMMDD

.NET Framework 中的区域性和日期/时间字符串格式

English Name                Abbreviation    ShortDate Format    
Afrikaans (South Africa)    af-ZA           yyyy/MM/dd  

老实说momentjs 似乎有问题。


1
谢谢。我倾向于同意你的观点,MomentJs听起来不太对,它似乎是采用“常用”格式而不是“技术上正确”的格式。 - Craig
@Craig 不用担心 :) - TheGeneral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接