2015-03-15 21 views
15

Dlaczego pojawił się błąd, gdy chcę uzyskać ciąg znaków TimeSpan z niestandardowym formatem.Błąd TimeSpan.ToString ("hh: mm")

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

usuń 'TimeOfDay'. just'DateTime.Now.ToString ("hh: mm"); "na marginesie, może być niejednoznaczne, jeśli czas przekracza 12nn, lepiej mieć to' hh: mm tt' –

+0

który był przykładem używając DateTime. Mam zmienną TimeSpan. Sprawdź ten kod: (new TimeSpan (10, 20, 0)) ToString ("hh: mm") –

+1

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

Odpowiedz

0

Nie używaj TimeOfDay. Bezpośrednio zrobić ToString() na DateTime.Now:

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

TimeOfDay jest TimeSpan. Dokumenty wyraźnie wskazują na to, że przeciążenie to: TimeSpan.ToString(string format):

Parametrem formatu może być dowolny prawidłowy specyfikator standardowego lub niestandardowego formatu dla wartości TimeSpan. Jeśli format jest równy String.Empty lub ma wartość null, zwracana wartość bieżącego obiektu TimeSpan jest formatowana za pomocą wspólnego specyfikatora formatu ("c"). Jeśli format jest dowolną inną wartością, metoda generuje wyjątek FormatException.

Jeśli trzeba to zrobić przy użyciu zmiennej TimeSpan, można po prostu dodać go do DateTime zmiennej, która ma swój czas część ustawiony na zero, a następnie użyć jej ToString():

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

który był przykładem użycia DateTime. Mam zmienną 'TimeSpan'. Sprawdź ten kod: '(new TimeSpan (10, 20, 0)) ToString (" hh: mm ")' –

+0

@Mohamadshiralizadeh: zobacz moją edycję. – dotNET

2

Zgodnie z MSDN TimeOfDay jest TimeSpan. I w przykładach TimeSpan.ToString widzisz, że : trzeba uciec.

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

to również wyjaśnione na stronie Custom TimeSpan Format Strings

formacie Specyfikatory zwyczaj Okres nie zawierają symbole separujące zastępczy takie jak symbole, które oddzielają dni od godzin, godzin od minut lub sekund od ułamków sekund. Zamiast tego te symbole muszą być zawarte w niestandardowym ciągu znaków w postaci literałów łańcuchowych. Na przykład "dd \ .hh \: mm" definiuje kropkę (.) Jako separator między dniami i godzinami oraz dwukropek (:) jako separator między godzinami i minutami.

Więc spróbuj:

DateTime.Now.TimeOfDay.ToString("hh\:mm"); 
Powiązane problemy