2008-11-24 6 views
1

Я работаю над локализацией приложения, в котором пользовательские шаблоны используются для форматирования даты-времени.Локализация даты-времени с использованием пользовательских шаблонов

один пример: дд-MM HH: мм

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

Это довольно тривиально, если я использую форматирование по умолчанию, но как только я отклонился от них, форматирование становится жестко запрограммированным.

Любые идеи?

Спасибо, Jonas

редактировать: У меня есть объекты CultureInfo, проблема заключается в том, что, когда я делаю DateTime.ToString («ES-эс»), я получаю слишком много информации - нужно только месяц + день, но с по умолчанию ToString, я получаю год + месяц + день

Редактировать снова: Я вижу, как я могу изменить шаблон ShortDate для каждого объекта CultureInfo, который я использую. Однако в некоторых ситуациях мне также нужен шаблон ShortDate по умолчанию, поэтому изменение, которое, к сожалению, оставило бы меня с другой, эквивалентной проблемой.

Окончательное редактирование: в случае, если кто-то заботится. Я так и не нашел решения, поэтому я закончил кодирование статической функции, которая проверяет текущую CultureInfo и возвращает правильно отформатированную дату, без года.

+0

У меня есть объекты CultureInfo, проблема в том, что когда я делаю DateTime.ToString («ES-es»), я получаю слишком много информации - мне нужен только месяц + день, но с по умолчанию ToString я получаю год + месяц + день. – Joda 2008-11-24 10:14:12

ответ

4

Посмотрите на класс DateTimeFormatInfo (свойство CultureInfo.DateTimeFormat), в частности, свойства DateSeparator, TimeSeparator, ShortDatePattern.

-1

Класс CultureInfo будет хорошим местом для начала поиска.

2

Может быть, вы могли бы попробовать это:

DateTime.Now.ToString(new System.Globalization.CultureInfo(Thread.CurrentThread.CurrentCulture.Name)); 

Если я хочу, например, для отображения времени для конкретной культуры, я хотел бы сделать это:

DateTime.Now.ToString(new System.Globalization.CultureInfo("ES-es")) 

В CultureInfo действует как IFormatProvider.

+0

DateTime.Now.ToString («dd-MMM-yy», новый System.Globalization.CultureInfo («es-CO»)) - это пример, включающий формат. – daniloquio 2012-02-08 16:40:59

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