C#:将初始 DayOfWeek 设置为星期一而不是星期日

问题描述 投票:0回答:4

有没有办法将第一个 DayOfWeek 设置为星期一 = 0 而不是星期日?

(int)dateList[0].DayOfWeek == 0) // 0 = Sunday
c# dayofweek
4个回答
11
投票

您需要创建自定义区域性,并将初始 DayOfWeek 指定为星期一。您的自定义区域性实例需要设置为通常用于访问区域性信息的任何上下文(即

Thread.CurrentCulture
)。以下文章应该可以帮助您开始创建自定义文化:

如何:创建自定义文化

编辑:

我刚刚重读了你的问题,我注意到了一些事情。您无法更改 DayOfWeek 属性...这只是一个枚举值。您需要将 DayOfWeek 与 CultureInfo.DateTimeFormat 属性的 FirstDayOfWeek 属性进行比较:

dateList[0].DayOfWeek == Thread.CurrentCulture.DateTimeFormat.FirstDayOfWeek

默认情况下,

FirstDayOfWeek
Sunday
。如果您创建了自定义文化,则可以是您选择的一周中的任何一天(即
Monday
)。


3
投票

DayOfWeek
enum
,因此您无法更改它。过去,我只是简单地调整了我存储的值来进行补偿,您可能必须做类似的事情。我需要 0 = 取消设置。


1
投票

为了让搜索此问题的人完成此操作,这是我的简单解决方法(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)

0
投票
string[] weekDays = Enum.GetNames(typeof(DayOfWeek));
string[] weekStartAsMonday = weekDays.Skip(1).Concat(weekDays.Take(1)).ToArray();
© www.soinside.com 2019 - 2024. All rights reserved.