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)