2015-10-08 5 views
7

У меня проблема с форматом даты во время размещения сайта, который разработан с использованием C# .net MVC.Почему формат даты отличается для той же культуры на разных компьютерах или ОС?

В моей машине развития (ОС: Windows 7, .net Framework 4.5) Дата формиат для испано-Панама (эс-PA) составляет мм/дд/гг и в серверной машине (ОС: Windows 8 , .net Framework 4.5) дает d/m/yy формат для той же культуры.

Я проверил его с помощью простого консольного приложения.

public static void Main() 
{ 
    DateTime dt = DateTime.Now; 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-PA"); 

    Console.WriteLine(dt.ToString("d")); 

    Console.ReadLine(); 
} 

Выход на машине развития является: 10/08/2015

Выход на сервере машины: 8/10/15

Я также проверил, изменив язык и региональные стандарты, но и в машине по умолчанию формат отличается.

Почему формат отличается от другой машины для той же культуры? Есть ли решение для этого?

+3

Вероятно потому, что на сервере по умолчанию является не предназначен для «среднего» пользователя. – juharr

ответ

3

Почему формат отличается в другой машине для одной культуры?

Поскольку форматы обновляются со временем, в разных выпусках ОС и в исправлениях/исправлениях. .NET выбирает формат из ОС (я считаю, во всяком случае), так что ОС является источником разницы - как вы видели в региональных настройках.

Есть ли решение для этого?

Проверьте, что обе машины обновлены с помощью Центра обновления Windows и, возможно, проверьте наличие доступных исправлений. В противном случае вы всегда можете вручную обновить тот, который хотите изменить, но, очевидно, это далеко не идеально.

Вполне возможно, что Windows 8 только имеет информацию более уточненный, чем Windows 7 таким образом, что не является будет решаться Windows, обновление :(

-1

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

Например, если вы используете IIS express на своем компьютере-разработчике (IIS express использует учетную запись пользователей Windows для рабочего процесса ASP.NET), вы можете перейти на другой допустимый формат для той же самой культуры в окнах, и теперь это будет выведенный формат для вашего веб-приложения.

Трудно дать решение проблемы без проблем. Это по-прежнему одна и та же дата и фактически отображает установленную культуру должным образом.

Однако, если вы хотите, чтобы формат, вы должны быть в состоянии сделать это, установив, например CurrentCulture.DateTimeFormat.ShortDatePattern

+1

Нет, это не проблема.Проблема в том, что * одна и та же культура * связана с разными форматами на разных машинах. –

+0

Да, это на самом деле моя точка зрения. – Brandlarm

+0

Тогда вы сделали свою точку * очень * смущенно. Весьма разумно ожидать, что одна и та же культура будет означать одно и то же в нескольких версиях операционной системы, если она не будет вручную изменена. Это, похоже, не так, но вы не объяснили это вообще. Вы утверждаете, что это не проблема, но это определенно звучит как проблема для меня. Предположим, у вас есть веб-приложение, распространяемое на нескольких компьютерах, и они берут желаемый идентификатор культуры из запроса ... не было бы странным, если бы пользователь видел разные результаты в зависимости от того, на какой машине он попал? –

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

  • Нет связанных вопросов^_^