Подтвердить что ты не робот

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

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

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

Ответ 1

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

Как создать пользовательские культуры

EDIT:

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

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

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

Ответ 2

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

Ответ 3

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