CultureInfo.GetCultureInfo("en-GB")与en-US日期格式不兼容,但与其他人罚款

Lys*_*Lys 4 c# globalization datetime

为什么第一行代码抛出"String未被识别为有效的DateTime".例外?

en-GB似乎与en-US不兼容,但奇怪地与zh-CN和ru-RU日期格式字符串兼容.

是的我可以简单地将文化信息更改为en-US,以使其与en-US日期格式字符串兼容.但我的问题是为什么en-GB使用zh-CN和ru-RU格式字符串?

有任何想法吗?

        var obj = DateTime.Parse("11/20/2013 3:10:36 AM", CultureInfo.GetCultureInfo(0x0809).DateTimeFormat);//en-US
        obj = DateTime.Parse("2013/11/20 3:16:08", CultureInfo.GetCultureInfo(0x0809).DateTimeFormat);//zh-CN
        obj = DateTime.Parse("20.11.2013 3:17:44", CultureInfo.GetCultureInfo(0x0809).DateTimeFormat); //ru-RU
Run Code Online (Sandbox Code Playgroud)

0x0809 zh-CN英语(英国)英语

谢谢,

Xen*_*ing 8

你已经指定了你期待DateFormaten-GB这通常是在格式dd/MM/yyyy ...和它试图创建20个月价值,这不存在的日期.

如果您将预期的输入格式更改为en-US它将起作用,您的内部日期将是正确的.然后,您可以根据需要将其输出为en-GB格式

var obj = DateTime.Parse("11/20/2013 3:10:36 AM", CultureInfo.GetCultureInfo("en-US").DateTimeFormat);//en-US
string s = obj.ToString(CultureInfo.GetCultureInfo("en-GB").DateTimeFormat); //20/11/2013 03:10:36
Run Code Online (Sandbox Code Playgroud)

  • en-GB解析将接受几种不同的格式和分隔符.最重要的是字符串中日期部分的顺序. (2认同)