Как отформатировать дату и время как гггг-ММ-дд кк: мм: сс (01-24 часа)?

#c# #datetime-format

#c# #дата и время-формат

Вопрос:

Я вызываю API на основе Java. Он выдает исключение проверки для даты и времени.

Требуемый формат: гггг-ММ-дд кк: мм: сс

Где kk форматирует часы между 01:00 и 24:00 , А НЕ ( 00:00 23:00 ).

Это не опечатка, это приемлемая буква шаблона для SimpleDateFormat в Java.

Кто-нибудь знает о хорошей строке формата или методе расширения для достижения этой цели в C #?

Комментарии:

1. В C # HH часы будут форматироваться в 24-часовом формате с начальным нулем learn.microsoft.com/en-us/dotnet/standard/base-types /…

2. Я почти уверен, что спецификаторы пользовательского формата не поддерживают это. Вам придется что-то собрать самостоятельно для части часов.

3. @Case Вы правы. Я не знал, что этот формат поддерживается в Java. 1

4. Означает ли это, что 00:30 будет отформатировано как 24:30? Это очень странно. (Форматирование просто 00:00 как 24:00 имело бы немного больше смысла.) Может быть, это действительно так. Странно.

5. @JonSkeet Это именно то, о чем я думал, но, видимо, это то, что kk делает Java ? Я действительно не знаю Java, но, похоже, это правда. Тем не менее, для меня это все еще не имеет смысла.

Ответ №1:

В итоге я использовал эту вонючую строку кода:

 DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace(" 00:", " 24:");
  

Комментарии:

1. Я не вонючий, это довольно уродливо, это утиная лента, но… Это просто работает ™. Кроме того, это просто и понятно, я сомневаюсь, что это можно сделать лучше. Я бы, возможно, обернул это в метод FormatInThatStrangeJavaDateFormatRequredByTheAPI(DateTime dt) , но найти осмысленное имя может быть сложнее, чем реализация