Преобразование перечисления DayOfWeek в строку, повторяющую день

мне было интересно, есть ли способ напрямую преобразовать целое число 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 ответов


более простым способом:

Dim day As String = Date.Today.DayOfWeek.ToString()

DateTimeFormatInfo.CurrentInfo.GetDayName.


для этого есть формат 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


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

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

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


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


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

Case 0 
    day = "Sunday"