Преобразование перечисления DayOfWeek в строку, представляющую день - PullRequest
8 голосов
/ 30 января 2010

Мне было интересно, есть ли способ напрямую преобразовать целое число DayOfWeek Возвращает в строку, представляющую день, как понедельник, вторник и т. Д.

Пример кода:

MessageBox.Show(Date.Today.DayOfWeek)

Это вернет 6 (по состоянию на сегодня). Есть ли способ, например, напрямую преобразовать это в Saturday? Меня не волнует, во что это действительно конвертирует, но я хочу покончить с моим делом выбора:

Select Case Date.Today.DayOfWeek
     Case 0
         day = "Sunday"
     Case 1
         day = "Monday"
     Case 2
         day = "Tuesday"
     Case 3
         day = "Wednesday"
     Case 4
         day = "Thursday"
     Case 5
         day = "Friday"
     Case 6
         day = "Saturday"
     Case Else
         day = "Apocalypse: we're all boned."
 End Select

Спасибо:)

Ответы [ 6 ]

12 голосов
/ 30 января 2010

DateTimeFormatInfo.CurrentInfo. GetDayName .

5 голосов
/ 30 января 2010

Более простой способ:

Dim day As String = Date.Today.DayOfWeek.ToString()
2 голосов
/ 30 января 2010

Для этого есть формат DateTime: dddd

Dim date1 As Date = #08/29/2008 7:27:15PM#
date1.ToString("dddd", CultureInfo.CreateSpecificCulture("en-US"))

С CultureInfo вы можете получить его на определенном языке (это необязательно)

Для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#ddddSpecifier

0 голосов
/ 14 апреля 2014

На всякий случай, если другие посмотрели на этот пример. Я полагаю, что это должен быть Случай 0 для воскресенья.

Case 0 
    day = "Sunday"
0 голосов
/ 30 января 2010

Date.Today.DayOfWeek.ToString даст вам то, что вы ищете. Красиво и просто.

0 голосов
/ 30 января 2010

DateTime.DayOfWeek не возвращает целое число - возвращает перечисление типа DayOfWeek. Я ожидаю, что это будет преобразовано в имя автоматически, но, возможно, это тонкость VB; Может быть, что-то делать с использованием Date вместо DateTime? Попробуйте это:

MessageBox.Show(DateTime.Today.DayOfWeek.ToString())

Это не будет чувствительным к культуре - оно всегда будет просто отображать название enum value на английском языке. Если это плохо для вас, используйте раствор Zyphrax или itowlson.

...