2016-02-15 2 views
2

Мы работаем над приложением, которое будет доступно для клиентов в нескольких регионах, включая Великобританию и США. По ряду видовых страниц мы выводим даты, как это:Как вы определяете дату в ASP.NET MVC

@Model.EventDate.ToString("dd/MM/yyyy HH:mm") 

Это хорошо работал в Великобритании, однако теперь, когда мы развертывание американской версии это должно быть что-то вроде (день/месяц переключился вокруг):

@Model.EventDate.ToString("MM/dd/yyyy HH:mm") 

Очевидно, что мы не хотим иметь 2 кодовых обозначения, 1 для Великобритании и 1 для США.

Есть ли способ показать даты в соответствии с регионом, в котором мы находимся?

Я думаю, что первый шаг будет оказание дата, как это:

@Html.DisplayFor(n => Model.EventDate) 

Затем добавив атрибут:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] 

Опять проблемы, кажется, что формат зашит в атрибут.

Любые идеи?

+0

Просто используйте [стандарт форматирования даты и времени] (https://msdn.microsoft.com/en-us/library/az4se3k1.aspx), который является с учетом активной культуры; а затем убедитесь, что культура установлена ​​правильно в вашем веб-приложении. – poke

ответ

2

метод DateTime.ToString имеет version with two arguments:

public string ToString(
    string format, 
    IFormatProvider provider 
) 

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

date.ToString("d", provider) 

будет производить 01.10.2008 для де-DE культуры, но 10/1/2008 для EN-US.

См. Раздел «Примеры» этой статьи MSDN для получения дополнительной информации.

0

Вам необходимо определить строку культуры, такую ​​как en-US, из входящего запроса, а затем сопоставить ее с пользовательской строкой формата. Затем вы можете создать экземпляр CultureInfo из строки культуры. Пример:

new CultureInfo("en-US") 

Затем с помощью этого метода с DateTime.ToString

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