2010-01-30 12 views
8

Me preguntaba si había una manera de convertir directamente el número entero DayOfWeek vuelve en una cadena que representa el día como lunes, martes, etcconversión de DayOfWeek enumeración a una cadena repesenting el día

Código de ejemplo:

MessageBox.Show(Date.Today.DayOfWeek) 

Esto devolverá 6 (a partir de hoy). ¿Hay alguna manera de convertir esto directamente en Saturday, por ejemplo? Realmente no importa lo que la convierte en muy, pero lo que quiero hacer con mi Select Case:

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 

Gracias :)

+0

No creo que el .NET framework sea compatible con su 'Case Else'. Lástima ... – Thomas

+0

Probablemente algo que MS debería ver ... sucederá un día. Aunque recibo errores usando 'day' más adelante en el código si no está allí: P – James

+0

No hay problema con el uso de' Case Else'. Hay formas más fáciles de obtener el nombre del día. Sin embargo, como señaló Jon, DayOfWeek es un tipo de enumeración, por lo que nunca será diferente de 0 a 6. – CoderDennis

Respuesta

5

Un sencillo manera:

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

Saludos, trabajado. Debería marcar el método 'ToString()' :) – James

+0

Esto funciona solo para inglés ... – ghord

+0

@ghord esta técnica simplemente transforma una enumeración en un valor de cadena; probablemente harías algo como 'DateTime.Today.ToString (" dddd ", new CultureInfo (" pt-br "))' –

0

DateTime.DayOfWeek no devuelve un número entero - devuelve una enumeración del tipo DayOfWeek. Esperaría que se convirtiera en el nombre automáticamente, pero tal vez esto sea una sutileza de VB; tal vez algo que ver con el uso de Date en lugar de DateTime? Prueba esto:

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

esto no será sensible a la cultura sin embargo - que siempre apenas mostrar el nombre del valor de enumeración, en Inglés. Si eso no es bueno para ti, usa la solución de Zyphrax o itowlson.

+0

Esto devolverá el nombre invariante (inglés de EE. UU.); está bien para depurar o almacenar en una base de datos o lo que sea, pero si lo está mostrando, debería usar algo que localice la cadena. – itowlson

+0

@itowlson: Estaba editando para decir algo similar, pero menos específicamente. No * cada * UI necesita ser localizado, IMO. Hay muchas aplicaciones que solo estarán en un idioma (piense en aplicaciones internas para empresas no internacionales). Si ese idioma es inglés, eso hace la vida aún más fácil. –

+0

Gracias. Y este código es solo para hacer referencia a algunos cuadros de texto en mi formulario en un orden horario.Los datos reales que se mostrarán provienen de una base de datos :) – James

0

Date.Today.DayOfWeek.ToString le dará lo que está buscando. Bonito y fácil.

-1

Solo en caso de que otros miran este ejemplo. Creo que debería ser el Caso 0 para el domingo.

Case 0 
    day = "Sunday" 
+0

Lo que tienes aquí es un comentario sobre la pregunta, no una respuesta. Publicar comentarios como respuesta para eludir las reglas conduce inevitablemente a la intervención del moderador. – Louis

+0

Suena bien. Pero busqué este código de ejemplo, y fue incorrecto más allá de la pregunta. Pasé un tiempo averiguándolo. Creo que debería señalarse para futuros usuarios, incluso si la pregunta ya fue respondida. –

Cuestiones relacionadas