Изменение формата даты на en-us, в то время как культура fr-ca - PullRequest
8 голосов
/ 25 марта 2010

Я работаю над локализацией сайта на французском языке. Однако я не должен менять формат даты на французский. Он должен оставаться в соответствии с форматом en-us, даже если для культуры задано значение fr-ca, т. Е. Когда остальное содержимое написано на французском языке, формат даты все еще должен быть на английском (en-us).

Ответы [ 6 ]

9 голосов
/ 25 марта 2010

Чтобы изменить форматирование дат, вы можете создать собственное CultureInfo на основе существующего CultureInfo (в вашем случае «fr-CA»), изменив только форматы даты. У меня нет никакого опыта в этом, но связанная статья и эта статья объясняют, как это делается. Предположительно, это не так уж сложно.

Я полагаю, что установка System.Threading.Thread.CurrentThread.CurrentCulture для экземпляра вашего пользовательского CultureInfo (например, в событии Page.Load) должна выполнить эту работу.


Или используйте класс CultureInfo, чтобы указать культуру для каждой строки:

CultureInfo culture = new CultureInfo("en-US");

Всякий раз, когда вы пишете дату на страницу, используйте следующий синтаксис:

myDate.ToString("d", culture);

или

string.Format(
  culture,
  "This is a string containing a date: {0:d}",
  myDate);

Класс CultureInfo находится в пространстве имен System.Globalization, а d в приведенном выше формате - это формат для вывода даты. См. Шпаргалку Джона Шихана "Краткий справочник по форматам .NET" для получения дополнительной информации о строках формата.

2 голосов
/ 16 сентября 2016

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

string culture = "ar-SA";  
//Set language and culture to Arabic  
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(culture);

//But independent of language, keep datetime format same
DateTimeFormatInfo englishDateTimeFormat = new CultureInfo("en-CA").DateTimeFormat;
Thread.CurrentThread.CurrentCulture.DateTimeFormat = englishDateTimeFormat;
2 голосов
/ 25 марта 2010

Спасибо, ребята !!!! Похоже, ваши предложения работают на меня. Я попытался создать собственную культуру, которая расширяет возможности fr-ca и меняет формат даты на en-us. Вот код

CultureInfo ci = new CultureInfo("fr-ca");
DateTimeFormatInfo dateformat = new DateTimeFormatInfo();
dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us
ci.DateTimeFormat = dateformat;
CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement);
obj.LoadDataFromCultureInfo(ci);
obj.Register();

Как только код зарегистрирует новый fr-ca, формат даты fr-ca будет таким же, как и у en-us. Код можно использовать в Page_Load.

2 голосов
/ 25 марта 2010

В строке при отображении даты выполните следующие действия:

CultureInfo ci = new CultureInfo("en-US");
string s = dateTimeObject.ToString(ci);

Это упрощенный пример, однако вам просто нужно выполнить необходимую работу над объектом DateTime.

1 голос
/ 29 марта 2010

Удивительно, но я получил очень простой ответ. При настройке Культуры и UICulture все, что мне нужно сделать, - это всегда задавать Культурную собственность en-us. Это приведет к постоянному отображению формата даты на английском языке.

1 голос
/ 25 марта 2010

Ниже приведен код в фрагменте кода:

CultureInfo ci = new CultureInfo("fr-ca"); 

DateTimeFormatInfo dateformat = new DateTimeFormatInfo();



dateformat.FullDateTimePattern = "dddd, mmmm dd, yyyy h:mm:ss tt";// Date format of en-us



ci.DateTimeFormat = dateformat; 

CultureAndRegionInfoBuilder obj = new CultureAndRegionInfoBuilder("fr-ca", CultureAndRegionModifiers.Replacement);


 obj.LoadDataFromCultureInfo(ci); 

obj.Register();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...