Intereting Posts
Кто владеет обернутыми streamами (например, TextWriter) в .NET? Не удалось загрузить файл или сборку. Microsoft.ReportViewer.WebForms.XmlSerializers Обработка исключений с несколькими формами C # Word Interop – проверка орфографии на определенном языке configuration.GetConnectionString («MyConn») получил нулевое значение? Определение манифеста размещенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) C # сравнить два объекта неизвестных типов (включая ссылочные и типы значений) Получить имя исполняемой сборки из ссылочной DLL в C # Как предотвратить включение службы WCF в состояние ошибки? Windows Phone 7: как отправить твит в twitter Как я могу получить доступ к SQLite с помощью C #? JsonConverter как десериализовать общий объект Комбинация UWP Combobox с свойством SelectedItem C # как правильно распоряжаться SmtpClient? ArgumentException – использование неопределенного значения ключевого слова 1 для события TaskScheduled в async

Изменение формата даты в en-us, а культура – fr-ca

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

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

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


Или используйте class 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 в приведенном выше формате – это формат, в котором выводится дата. Подробную информацию о строках форматирования см. В разделе чит-листа «Штрих-код String Short String» в разделе «Штрих-код .NET» .

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

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

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

Спасибо, парни !!!! Похоже, твои санкции работают на меня. Я попытался создать пользовательскую культуру, которая расширяет возможности 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.

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

 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; 

Вот приведенный выше код в snipet кода:

 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(); 

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