2012-06-03 1 views
0

Я пытаюсь отформатировать дату и время в своем приложении на основе информации о настройках пользователей, однако каждый ресурс, который я вижу, продолжает указывать, что мне нужно вручную вводить каждый языковой стандарт культуры в коде. Например, если бы я хотел en-UK, мне пришлось бы вручную добавить новую CultureInfo («en-UK»); с чем-то вроде новой CultureInfo («en-UK») ;.Преобразование даты и времени на основе информации о культуре в WP7

Есть ли способ просто нажимать на установленную в данный момент культуру на телефоне без необходимости на самом деле вводить информацию о культуре rtc? Что-то, что может работать как «date = ConvertToLocalCultureFormat (date);»?

ответ

1

Я не знаю, если это работает на WinPhone7, но вы можете использовать

CultureInfo.CurrentCulture.Name 

, который возвращает имя из CurrentCulture текущего потока (EN-UK или что-то ваше приложение работает в)

See for refs

Однако это не обязательно. Если преобразовать DateTime в строку следующим образом:

DateTime dt = DateTime.Now; 
    // Converts dt, formatted using the ShortDatePattern 
    // and the CurrentThread.CurrentCulture. 
    string dateInString = dt.ToString("d"); 

вы должны получить преобразование в правой CultureInfo телефона.

+0

Спасибо, я подумал, что, возможно, его нужно установить иначе, так как я прочитал несколько статей, жалующихся на то, что по умолчанию он по умолчанию является en-US. – Euthyphro

0

Какие справочные ресурсы вы прочитали, предлагая вам вручную указать текущую культуру?

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

Этот метод использует информацию о форматировании, полученную из текущей культуры. В частности, он объединяет строки пользовательского формата, возвращаемые свойствами ShortDatePattern и LongTimePattern объекта DateTimeFormatInfo, возвращенного объектом Thread.CurrentThread.CurrentCulture.DateTimeFormat.

DateTime exampleDate = new DateTime(2008, 5, 1, 18, 32, 6); 
string s = exampleDate.ToString(); 
// Gives "5/1/2008 6:32:06 PM" when the current culture is en-US. 
// Gives "01/05/2008 18:32:06" when the current culture is fr-FR. 
// Gives "2008/05/01 18:32:06" when the current culture is ja-JP. 
1

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

Метод Date.ToString(), например, вызовет перегрузку с помощью this.ToString(CultureInfo.CurrentCulture), чтобы выбрать текущую настройку культуры приложения и использовать ее для форматирования.