2013-05-20 5 views
0

Доброе утро,Отображение дня недели в VB

Я использую элемент управления календарю, чтобы захватить выбранные пользователем даты и диапазоны дат. В событии клика по календарю я обновляю свою форму, чтобы показать пользователю выбранные даты начала и окончания.

В рамках обновления, я обновить текстовое поле, чтобы показать день недели и дату:

txtStartDate.Text = WeekdayName(Weekday(startDate)) + " " + startDate 

Однако будний день я получаю 1 день из (вторник показывает в понедельник, понедельник показывает, как воскресенье и воскресенье показывают в субботу)

Чтобы обойти эту проблему, я сделал следующее:.

txtStartDate.Text = WeekdayName(Weekday(startDate) - 1) + " " + startDate 

Это работает в понедельник - субботу, но когда я выбираю воскресенье в календаре он (очевидно, в ретроспективе!) падает, так как он не может отображать дату со значением -1!

Я тщетно пытался найти способ установить первый день недели в качестве понедельника вместо воскресенья. Я сделал это для управления календарем, но это только изменяет отображаемый начальный день, а не значение дня. Я попытался изменить настройки CurrentCulture:

Thread.CurrentThread.CurrentCulture = New CultureInfo("en-UK") 
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-UK") 

Это также не работает.

Как я могу установить понедельник как день 0 в будний день (startDate)?

+0

Почему это должен быть номер? Что было бы неправильно при вызове свойства DayOfWeek типа DateTime. – James

ответ

3

Проблема заключается в том, что Weekday по умолчанию является воскресеньем, являющимся первым днем ​​недели, а WeekdayName по умолчанию используется для текущей системы по умолчанию.

Попробуйте это:

txtStartDate.Text = WeekdayName(Weekday(startDate, FirstDayOfWeek.System)) + " " + startDate 
+0

, который отлично работает! Я пробовал вариант firstdayofweek, но в немного неправильном месте .. doh! Мне нужен будний день в разных местах, поэтому было бы более эффективно устанавливать системную систему firstdayofweek, а не каждый раз, когда я вызываю метод weekDayName, если это возможно? – DazEvans

0

Попробуйте это:

Dim thisCulture As Globalization.CultureInfo = Globalization.CultureInfo.CurrentCulture 
Dim dayOfWeek As DayOfWeek = thisCulture.Calendar.GetDayOfWeek(startDate) 
Dim dayName As String = thisCulture.DateTimeFormat.GetDayName(dayOfWeek)