.net DateTimeFormat.FirstDayOfWeek返回错误的日期

.net DateTimeFormat.FirstDayOfWeek返回错误的日期,.net,.net,我有一台具有以下区域设置的windows计算机: 主位置:德国, 地区格式:US, Windows显示语言:英语, 一周的第一天是星期一 这个核心在一周的第一天就给我错误的回复 CultureInfo culture = new CultureInfo("en-US"); var test = culture.DateTimeFormat.FirstDayOfWeek; //'Monday', but should be 'Sunday' Console.WriteLine(test.ToStr

我有一台具有以下区域设置的windows计算机:
主位置:德国
地区格式:US
Windows显示语言:英语
一周的第一天是星期一

这个核心在一周的第一天就给我错误的回复

CultureInfo culture = new CultureInfo("en-US");
var test = culture.DateTimeFormat.FirstDayOfWeek; //'Monday', but should be 'Sunday'
Console.WriteLine(test.ToString());

另一台计算机具有德语语言和格式的区域设置,并返回Sunday

如果本地计算机的设置与区域性匹配,则构造函数将使用本地计算机的设置。这是可以覆盖的

从文件中:

用户可以选择通过“控制面板”的“区域和语言选项”部分覆盖与当前Windows区域性相关联的某些值。例如,用户可能选择以不同的格式显示日期,或者使用区域性默认货币以外的货币

如果与名称关联的区域性标识符与当前Windows区域性的区域性标识符匹配,则此构造函数将创建一个使用这些重写的CultureInfo对象

显示
CultureInfo(string)
调用
useUserOverride
参数设置为true的构造函数

要忽略本地更改,请使用相同的构造函数,将
useUserOverride
设置为
false
,例如:

var culture = new CultureInfo("en-US",false);
您可以检查该属性,查看您获得的
CultureInfo
对象是否基于用户覆盖


顺便说一句,这个设计不错。在桌面应用程序中,用户希望应用程序遵守区域设置。

我看到的恰恰相反。对于
en-US
来说是星期天,对于
de
来说是星期天Monday@PanagiotisKanavosvar cultureEn=新文化信息(“美国”)//周日,var cultureDe=新文化信息(“de”)//星期一。但是在windows中使用此区域设置时,我得到的总是“星期一”,操作系统设置会覆盖.NET默认设置。使用控制面板>区域>格式选项卡。