C#: установить начальный DayOfWeek как понедельник, а не воскресенье

Есть ли способ установить первый DayOfWeek как понедельник = 0, а не воскресенье?

(int)dateList[0].DayOfWeek == 0) // 0 = Sunday

3 ответа

Решение

Вам нужно будет создать собственную культуру и указать начальный DayOfWeek как понедельник. Экземпляр вашей пользовательской культуры должен быть настроен на тот контекст, который обычно используется для доступа к информации о культуре (т.е. Thread.CurrentCulture). Следующая статья поможет вам создать собственную культуру:

Как: создавать собственные культуры

РЕДАКТИРОВАТЬ:

Я просто перечитал ваш вопрос и кое-что заметил. Вы не можете изменить свойство DayOfWeek... это просто значение перечисления. Вам необходимо сравнить DayOfWeek со свойством FirstDayOfWeek свойства CultureInfo.DateTimeFormat:

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

По умолчанию, FirstDayOfWeek является Sunday, Если вы создали собственную культуру, это может быть любой день недели, который вы выберете (т.е. Monday).

DayOfWeek является enum и поэтому ты не можешь это изменить. В прошлом я просто корректировал значение, которое я храню, чтобы компенсировать, и вам, возможно, придется сделать что-то подобное. Мне нужно 0 = Unset.

Просто для завершения этого для людей, которые ищут эту проблему, вот мой простой обходной путь (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)
Другие вопросы по тегам