2010-01-30 9 views
8

mi chiedevo se ci fosse un modo per convertire direttamente l'intero DayOfWeek restituisce in una stringa che rappresenta il giorno come Lunedi, Martedì eccConversione DayOfWeek enum in una stringa repesenting il giorno

codice di esempio:

MessageBox.Show(Date.Today.DayOfWeek) 

Questo restituirà 6 (a partire da oggi). C'è un modo per convertire direttamente questo in Saturday, per esempio? Non mi interessa quello che trasforma realmente in, ma voglio farla finita con la mia 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 

Thanks :)

+0

Non credo che il framework .NET supporti il ​​tuo "caso Else". Peccato ... – Thomas

+0

Probabilmente qualcosa che MS dovrebbe guardare ... succederà un giorno. Anche se ottengo errori usando 'day' più avanti nel codice se non è presente: P – James

+0

Non c'è niente di sbagliato nell'usare' Case Else'. Ci sono modi più semplici per ottenere il nome del giorno. Tuttavia, come ha sottolineato Jon, DayOfWeek è un tipo enum, quindi non sarà mai diverso da 0 a 6. – CoderDennis

risposta

5

Un semplice way:

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

Cheers, ha funzionato. Dovresti controllare il metodo 'ToString()' :) – James

+0

Questo funziona solo per l'inglese ... – ghord

+0

@ghord questa tecnica trasforma semplicemente un'enumerazione in un valore stringa; probabilmente dovresti fare qualcosa come 'DateTime.Today.ToString (" dddd ", new CultureInfo (" pt-br "))' –

0

DateTime.DayOfWeek non restituisce un numero intero - restituisce un enum di tipo DayOfWeek. Mi aspetto che venga convertito automaticamente nel nome, ma forse questa è una sottigliezza VB; forse qualcosa a che fare con l'utilizzo di Date invece di DateTime? Prova questo:

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

Questo non sarà sensibile cultura però - sarà sempre e solo visualizzare il nome del valore enum, in lingua inglese. Se non ti va bene, usa la soluzione di Zyphrax o di itowlson.

+0

Ciò restituirà il nome invariante (inglese americano); va bene per il debug o la memorizzazione in un database o qualsiasi altra cosa, ma se lo sta visualizzando dovrebbe usare qualcosa che localizzi la stringa. – itowlson

+0

@itowlson: Stavo solo modificando per dire qualcosa di simile, ma meno specificatamente. Non * ogni * UI deve essere localizzato, IMO. Ci sono molte app che saranno sempre e solo in una lingua (pensate a app interne per aziende non internazionali). Se quella lingua è l'inglese, ciò rende la vita ancora più facile. –

+0

Grazie. E questo codice è solo per fare riferimento ad alcuni TextBox nel mio modulo in un ordine orario.I dati reali che verranno visualizzati provengono da un database :) – James

0

Date.Today.DayOfWeek.ToString ti darà quello che stai cercando. Bello e facile.

-1

Nel caso in cui altri guardassero questo esempio. Credo che dovrebbe essere Case 0 per domenica.

Case 0 
    day = "Sunday" 
+0

Quello che hai qui è un commento sulla domanda, non una risposta. Inviare commenti come risposta per eludere le regole porta inevitabilmente all'intervento del moderatore. – Louis

+0

Sembra buono. Ma ho cercato questo codice di esempio, ed è stato errato oltre la domanda. Ho passato un po 'di tempo a capirlo. Penso che dovrebbe essere indicato per i futuri utenti, anche se alla domanda era già stata data una risposta. –