2015-02-28 5 views
-2

Я получаю вопрос об одной строки кода; (DateTime.ToString форматы

TBCurrent.Text = DateTime.Now.Subtract(Current).ToString("HH:mm:ss"); 

Это вызывает на тик таймера я уже пробовал следующие форматы:

"HH\:mm\:ss" 
"HH':'mm':'ss" 
"HH\":\"mm\":\"ss" 

Это работает, если я ставлю просто «мм» или «сс», но даже не «мм сс HH».

ли вы сталкиваетесь такую ​​ошибку раньше? или это версия .NET (4.0) связаны?

Thank you, Michael

+1

«Я получаю вопрос» не говорит нам ничего * о том, что вы видите. Какая ошибка? (Как утверждает Jeppe, вы форматируете TimeSpan, а не DateTime, чтобы начать с ...) –

+0

@JonSkeet Point для него и Стив. Я был уверен, что форматы DateTime и TimeSpan совпадают. – user2868288

+0

Вы также можете использовать '(DateTime.Now - Current) .ToString (...)', если хотите. –

ответ

3

То, что TimeSpan formatting (see link), а не DateTime. Попробуйте "hh':'mm':'ss".

Это обычная ошибка, чтобы думать TimeSpan форматирование - это то же самое, что и DateTime форматирование. До .NET 4.0 вы не могли форматировать TimeSpan.

Для DateTime есть два способа написать время дня, 20:50 или 8:50 PM. Там "H" дает 20, а "h" дает 8. С TimeSpan эта разница отсутствует, и вы всегда должны использовать строчные буквы h.

1

Этот формат, кажется, чтобы получить результат, который вы хотите

TBCurrent.Text = DateTime.Now.Subtract(Current).ToString(@"hh\:mm\:ss"); 

Вам нужно поставить обратную косую черту перед двоеточием, так как метод Subtract возвращает TimeSpan не DateTime и TimeSpan имеет различные правила для Custom Format String. И не забывайте @ verbatim, чтобы избежать обратных косых черт

Смежные вопросы