Override даты по умолчанию разделитель в .net в

голоса
3

У меня есть веб-сервер, расположенный в Швейцарии, и он призван служить как американский регион и европейский регион. Когда дата отображается с Северной и Южной Америке, дата отделена от периода, а не косой чертой.

В некоторых случаях я хочу пользователь период, если они являются европейскими, в другом я хочу использовать косую черту. Если я указать формат строки использовать косую черту, он будет преобразован в период на основе настроек компьютера. Что мне нужно сделать, чтобы указать региональные настройки на каждый пользователь (пользователь должен войти, и я знаю, что область он исходит из).

Задан 19/05/2009 в 11:43
источник пользователем
На других языках...                            


4 ответов

голоса
2

Используйте строку формата с DateTime.ToString(), как это:

 DateTime.Now.ToString("MM/dd/yyyy");

В этом случае символ / означает «использовать разделитель даты для текущей культуры.». Даже лучше, вы можете просто позвонить DateTime.Now.ToShortDateString()использовать короткий формат даты местной системы.

Там больше помощи с локализацией в System.Globalizationпространстве имен.

Теперь вот трюк: ваш «местный» система ваш веб - сервер, и это означает , что он почти всегда будет использовать швейцарскую формат. Таким образом , вы также хотите передать , IFormatProviderчтобы сообщить системе , что культура использования. Это будет выглядеть примерно так:

DateTime.Now.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
Ответил 19/05/2009 в 11:46
источник пользователем

голоса
3

Если текущая культура использует период в качестве разделителя даты, то вы можете отобразить с помощью косой черты

C #

date.ToString(@"dd\/MM\/yyyy");

VB

date.ToString("dd\/MM\/yyyy")
Ответил 19/05/2009 в 11:48
источник пользователем

голоса
5

Глобализация в ASP.NET должны сделать все для вас довольно много. См эту статью MSDN , озаглавленную Как установить Культуру и UI культуры для ASP.NET веб - страницы глобализации . Это должно быть именно то , что вы хотите, как вам просто нужно установить текущую (UI) культуры для текущего потока при входе пользователя в систему . Вы можете позвонить date.ToString()и он возвращает текстовое представление в правильном формате.

Эквивалентно, вы могли бы сделать что-то вроде этого:

var culture = System.Globalization.CultureInfo.GetCultureInfo("en-GB");
var dateString = date.ToString(culture.DateTimeFormat);

Но это на самом деле просто делать то же самое вручную, и гораздо менее элегантно. Вы могли бы также использовать в рамках глобализации ASP.NET здесь.

Ответил 19/05/2009 в 11:50
источник пользователем

голоса
1

Я не имел необходимости использовать его, но DateTime имеет встроенную информацию культуры, которые вы можете использовать:

DateTime dt = DateTime.Now;
dt.ToString(System.Globalization.CultureInfo.GetCultureInfo("fr-CH"));

Смотрите это в MSDN . Просто запишите культуру вашего пользователя ( «FR-CH», «EN-US» и т.д.) , то вы можете сделать больше , чем просто США против. Швейцария.

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

Ответил 19/05/2009 в 11:50
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more