2016-03-21 3 views
2

Я хотел бы напечатать DateTime в формате HH:mm:ss. Это текущий кодКак установить правильный формат DateTime?

DateTime.Now.ToString("T"); 

это дает мне формат: HH:mm:ss:fff

Я обнаружил, что CultureInfo может помочь, так что я преобразовать код, как

DateTime.Now.ToString("T", new CultureInfo(fr-FR)) 

или

DateTime.Now.ToString("T", new CultureInfo(hr-HR)) 

с без изменений. Вы можете мне помочь?

+2

Вы просто ответите: 'ToString (" HH: mm: ss ");' – Ian

+2

@Ian В таком случае было бы лучше избежать символа ':' как '':'', если текущая культура OP не используйте ':' как 'TimeSeparator'. –

+0

@ SonerGönül вы правы ... не все культуры используют ':' как 'TimeSeparator' – Ian

ответ

7

The "T" Format Specifier использует LongTimePattern свойство настроек культуры, которые вы использовали. И это свойство изменяется по настройкам культуры.

Например, это может быть h:mm:ss tt, H:mm:ss или hh:mm:ss tt и т.д ..

Но InvariantCulture использует HH:mm:ss формат, который является именно то, что вы хотите. Просто передайте InvariantCulture в качестве второго параметра в вашем методе ToString, и с вами все будет в порядке.

DateTime.Now.ToString("T", CultureInfo.InvariantCulture); 

Или вы можете использовать custom date and time formatting like;

DateTime.Now.ToString("HH:mm:ss", CultureInfo.InvariantCulture); 

Кстати, fr-FR культура также использование HH:mm:ss в формате LongTimePattern но hr-HR использования культуры H:mm:ss.

+0

Кажется, что у меня есть другая проблема. Я хотел бы вычесть две DateTime - DateTime.Now и Variable типа DateTime. У меня есть этот код (DateTime.Now - Varible) .ToString ("T"); и это даст мне HH: mm: ss: fff. Когда я устанавливаю ToString ("HH: mm: ss"); он выдает ошибку. Строка ввода не была в правильном формате. .... DateTime.Now.ToString ("T", CultureInfo.InvariantCulture); также не работает. Вы можете помочь? –

+1

@ TomášČičman 'DateTime.Now - Varible' возвращает [' TimeSpan'] (https://msdn.microsoft.com/en-us/library/system.times), а не 'DateTime'. Он имеет немного другое форматирование, чем 'DateTime'. В таком случае вы можете использовать '(DateTime.Now - Varible) .ToString (@" hh \: mm \: ss ", CultureInfo.InvariantCulture)' например. Взгляните на [стандарт] (https://msdn.microsoft.com/en-us/library/ee372286%28v=vs.110%29.aspx) и [пользовательский] (https://msdn.microsoft.com). /en-us/library/ee372287%28v=vs.110%29.aspx) форматирование по времени. –

+0

Огромное спасибо, это работает :) :) :) –

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