.NET和Windows文化与标准不同

时间:2018-02-08 02:15:54

标签: c# .net momentjs culture

如果我运行以下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的输出。

为什么他们不一样?研究表明,一个人可能是正确的。如果我在客户端中输入日期然后尝试在服务器上解析它,则会出现此问题。

1 个答案:

答案 0 :(得分:3)

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

等同于

af-ZA   Afrikaans - South Africa    0x0436  AFK

Date and time notation in South Africa

  

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

日期备注

  

即便如此,旧的日期格式仍然在格式中常用   “dd / mm / yyyy”,“日月份”订单更常见   非数字月份名称。

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

YYYY-MM-DD  or  YYYYMMDD

.NET Framework Cultures with Date and Time String Formats

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

诚实地说momentjs似乎错了