.NET DateTime не возвращает AM / PM в ToShortTimeString ()

Я столкнулся с проблемой, которая сводит меня с ума. В моем приложении (ASP.NET MVC2 / .NET4) я просто запускаю это:

DateTime.Now.ToShortTimeString()

Все примеры, которые я видел, показывают, что я должен получить что-то вроде: 12:32 PM , однако я получаю 12:32 без AM / PM.

Я запустил LinqPad 4, чтобы посмотреть, смогу ли я повторить это. Вместо этого он возвращает 12:32 вечера правильно.

Какого черта?

9
задан chum of chance 17 August 2010 в 17:40
поделиться

6 ответов

Вы также можете попробовать настраиваемый формат , чтобы избежать путаницы, связанной с культурой:

DateTime.Now.ToString("hh:mm tt")
10
ответ дан 4 December 2019 в 11:03
поделиться

KBrimington выглядит правильным:

Строка, возвращаемая методом ToShortTimeString, зависит от языка и региональных параметров. Он отражает шаблон, определенный объектом DateTimeFormatInfo текущего языка и региональных параметров. Например, для языка и региональных параметров en-US стандартным коротким временным шаблоном является «h: mm tt»; для культуры de-DE это «ЧЧ: мм»; для культуры ja-JP это «Ч: мм». Конкретную строку формата на конкретном компьютере также можно настроить так, чтобы она отличалась от стандартной строки короткого формата времени.

Из MSDN

4
ответ дан 4 December 2019 в 11:03
поделиться

Если вы не хотите возиться с культурой для всего потока/приложения, попробуйте следующее:

CultureInfo ci = new CultureInfo("en-US");
string formatedDate = DateTime.Now.ToString("t", ci);

Вы можете найти список строк формата DateTime здесь.

2
ответ дан 4 December 2019 в 11:03
поделиться

Функция использует шаблоны пользователей по умолчанию. Их можно изменить в Панели управления. Проверьте первую вкладку в настройках «Регион и язык». Измените шаблон Кратковременного на шаблон, например, «ч: мм тт», и все готово.

1
ответ дан 4 December 2019 в 11:03
поделиться

Вы можете установить информацию о культуре потока, и затем она будет использоваться методом ToShortTimeString (). Но поймите, что это повлияет на весь код, работающий в этом потоке.

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
1
ответ дан 4 December 2019 в 11:03
поделиться

Да, это зависит от вашей локали. Какое значение имеет System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortTimePattern в вашем приложении?

Смотрите MSDN Link

1
ответ дан 4 December 2019 в 11:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: