有没有办法将第一个 DayOfWeek 设置为星期一 = 0 而不是星期日?
(int)dateList[0].DayOfWeek == 0) // 0 = Sunday
您需要创建自定义区域性,并将初始 DayOfWeek 指定为星期一。您的自定义区域性实例需要设置为通常用于访问区域性信息的任何上下文(即
Thread.CurrentCulture
)。以下文章应该可以帮助您开始创建自定义文化:
编辑:
我刚刚重读了你的问题,我注意到了一些事情。您无法更改 DayOfWeek 属性...这只是一个枚举值。您需要将 DayOfWeek 与 CultureInfo.DateTimeFormat 属性的 FirstDayOfWeek 属性进行比较:
dateList[0].DayOfWeek == Thread.CurrentCulture.DateTimeFormat.FirstDayOfWeek
默认情况下,
FirstDayOfWeek
为 Sunday
。如果您创建了自定义文化,则可以是您选择的一周中的任何一天(即 Monday
)。
DayOfWeek
是 enum
,因此您无法更改它。过去,我只是简单地调整了我存储的值来进行补偿,您可能必须做类似的事情。我需要 0 = 取消设置。
为了让搜索此问题的人完成此操作,这是我的简单解决方法(VB.NET):
Private Function GetTrueDayOfWeek(DayOfWeekUS As Int16)
Dim RetVal As Int16 = 0
If DayOfWeekUS = 0 Then
RetVal = 7
Else
RetVal = DayOfWeekUS
End If
Return RetVal
End Function
用途:
Dim TrueDayInWeek as int16
TrueDayInWeek = GetTrueDayOfWeek(dateList(0).DayOfWeek)
string[] weekDays = Enum.GetNames(typeof(DayOfWeek));
string[] weekStartAsMonday = weekDays.Skip(1).Concat(weekDays.Take(1)).ToArray();