C#: Set initial DayOfWeek as Monday not Sunday

前端 未结 3 1456
醉酒成梦
醉酒成梦 2020-12-31 03:42

Is there a way to set the first DayOfWeek as Monday = 0 not Sunday?

(int)dateList[0].DayOfWeek == 0) // 0 = Sunday
相关标签:
3条回答
  • 2020-12-31 04:15

    DayOfWeek is an enum and so you can't change it. I have, in the past, simply adjusted the value I store to compensate and you may have to do something similar. I needed 0 = Unset.

    0 讨论(0)
  • 2020-12-31 04:26

    Just to complete this for people searching this issue, here is my simple workaround (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
    

    Usage:

    Dim TrueDayInWeek as int16
    TrueDayInWeek = GetTrueDayOfWeek(dateList(0).DayOfWeek)
    
    0 讨论(0)
  • 2020-12-31 04:28

    You would need to create a custom culture, and specify the initial DayOfWeek as Monday. An instance of your custom culture would need to be set to whatever context is normally used to access culture information (i.e. Thread.CurrentCulture). The following article should get you started on creating a custom culture:

    How to: Create Custom Cultures

    EDIT:

    I just reread your question, and I noticed something. You can not change the DayOfWeek property...that is simply an enumeration value. You would need to compare the DayOfWeek to the FirstDayOfWeek property of the CultureInfo.DateTimeFormat property:

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

    By default, FirstDayOfWeek is Sunday. If you created a custom culture, it could be any day of the week you so choose (i.e. Monday).

    0 讨论(0)
提交回复
热议问题