#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)
, но найти осмысленное имя может быть сложнее, чем реализация