Есть ли параметр DateTime в. NET, который автоматически устанавливает формат на 12 или 24 часа в зависимости от культуры? - PullRequest
1 голос
/ 05 августа 2020

По сути, вопрос говорит сам за себя: я хочу иметь возможность установить формат даты и времени, кроме настройки часов 12/24, которая должна быть взята из настроек культуры.

Так, например, для en- США Я хочу иметь h:mm tt (15:34 PM) и для fr-FR H:mm (15:34)

Должен ли я просто вручную кодировать:

string format = CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("tt") ? "h:mm tt" : "H:mm"

или есть более элегантный способ?

Здесь есть аналогичный вопрос: . net Спецификация культуры c 12/24 часовое форматирование но автор хочет установить часы AM / PM, но оставьте местный формат времени / даты нетронутым, что противоречит моему вопросу.

1 Ответ

0 голосов
/ 07 августа 2020

Есть несколько разных способов справиться с этим:

  • Вы можете сделать то, что предложили, проверяя наличие tt:

    cultureInfo.DateTimeFormat.ShortTimePattern.Contains("tt")
    
  • Точно так же вы можете проверить, присутствуют ли строки обозначения AM или PM. (Я думаю, это немного более надежно.)

    String.IsNullOrEmpty(cultureInfo.DateTimeFormat.PMDesignator)
    
  • Вы можете взять ShortTimePattern и заменить любые токены, которые хотите изменить или удалить.

  • Вы можете просто использовать ShortTimePattern как есть и доверять формату, подходящему для пользователя.

...