2015-03-15 16 views
15

Perché ho ricevuto un errore quando voglio ottenere la stringa di un TimeSpan con un formato personalizzato.Errore TimeSpan.ToString ("hh: mm")

DateTime.Now.TimeOfDay.ToString("hh:mm"); 
// Error: Input string was not in a correct format. 
+0

rimuovere 'TimeOfDay'. just'DateTime.Now.ToString ("hh: mm"); 'come nota a margine, potrebbe essere ambiguo se il tempo è superiore a 12nn, meglio avere questo' hh: mm tt' –

+0

che era un esempio di DateTime. Ho una variabile TimeSpan. Controlla questo codice: (nuovo TimeSpan (10, 20, 0).) ToString ("hh: mm") –

+1

'DateTime.Now.TimeOfDay.ToString (" hh \\: mm ");' –

risposta

32
DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss") 

Documentation

0

Non utilizzare TimeOfDay. Direttamente fare ToString() su DateTime.Now:

DateTime.Now.ToString("hh:mm"); 

TimeOfDay è un TimeSpan. I documenti indicano chiaramente il sovraccarico di TimeSpan.ToString(string format):

Il parametro di formato può essere qualsiasi identificatore di formato standard o personalizzato valido per i valori di TimeSpan. Se il formato è uguale a String.Empty o è null, il valore di ritorno dell'oggetto TimeSpan corrente viene formattato con l'identificatore di formato comune ("c"). Se il formato è qualsiasi altro valore, il metodo genera un FormatException.

Se è necessario farlo utilizzando una variabile TimeSpan, si può semplicemente aggiungere ad una variabile DateTime che ha la sua parte tempo impostato a zero, e quindi utilizzare la sua ToString():

DateTime.Today.Add(YourTimeSpanVariable).ToString("hh:mm"); 
+0

che è stato un esempio utilizzando Appuntamento. Ho una variabile 'TimeSpan'. Controlla questo codice: '(nuovo TimeSpan (10, 20, 0).) ToString (" hh: mm ")' –

+0

@Mohamadshiralizadeh: vedi la mia modifica. – dotNET

2

Secondo MSDN timeofday è un TimeSpan. E negli esempi di TimeSpan.ToString si vede che lo : deve essere sottoposto a escape.

hh \: mm \: ss: 03:00:00

Questo si spiega anche sulla pagina Custom TimeSpan Format Strings

Gli identificatori di formato TimeSpan personalizzate non includono i simboli di separazione segnaposto , ad esempio i simboli che separano i giorni da ore, ore da minuti o secondi da secondi frazionari. Invece, questi simboli devono essere inclusi nella stringa di formato personalizzata come stringhe letterali. Ad esempio, "dd \ .hh \: mm" definisce un punto (.) Come separatore tra giorni e ore e due punti (:) come separatore tra ore e minuti.

in modo da provare:

DateTime.Now.TimeOfDay.ToString("hh\:mm"); 
Problemi correlati