Формат даты ASP.NET - PullRequest
       9

Формат даты ASP.NET

2 голосов
/ 10 января 2012
  • У меня проблема с приложением на определенном сервере.

В любой среде, кроме проблемной среды

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

DD/MM/YYYY

На проблемном сервере

Кажется, что проблема возникает только на одном сервере.Этот сервер неправильно запрашивает американские даты:

MM/DD/YYYY

Что я уже пробовал

  • Добавление раздела "глобализация" в файл web.configпопытаться форсировать культуру en-GB
  • Проверка раздела глобализации «machine.config» (там также написано en-GB).
  • Я проверил, что клиенты запрашивают en-GB.ГБ в качестве предпочтительной культуры для ответов.
  • По предложению Eoin я также проверил региональные настройки сервера (для них установлена ​​правильная дата dd / MM / yyyy).

Что я не могу попробовать

Я использую MS ASP.NET MVC, который автоматически десериализует данные формы HTML в объект, поэтому я не могу вручнуюукажите формат даты - например, используя DateTime.Parse(myDateStr, "dd/MM/yyyy"), так как анализ выполняется Microsoft MVC.

Могу ли я что-нибудь еще сделать.Это приложение для внутренней сети, и все клиенты находятся в Великобритании.

Ответы [ 5 ]

5 голосов
/ 10 января 2012

Если вы переопределяете текущую культуру в своем разделе глобализации, убедитесь, что вы указали параметры UICulture & Culture.

Однако, учитывая, что у вас есть эта проблема только на 1 из многих серверов, я ожидаю, что сам сервер настроен по-другому.Если вы можете войти на свой проблемный сервер как администратор, проверьте следующее (это windows 7, но должно быть похоже на Windows Server 2008)

Панель управления> Регион и язык> Вкладка «Форматы»> Формат:Английский (Великобритания) "

и убедитесь, что даты ожидаются в формате дд / мм / гггг

1 голос
/ 11 января 2012

Вам нужно выполнить следующие две вещи.

  1. Установить Культуру в web.config, как указано ниже

    uiCulture = "en-GB" culture = "en-GB" .

  2. Установите метод формы POST, как я упоминал ниже

    using (Html.BeginForm("DailyReport", "Reports", FormMethod.Post, new { id = "ActivityReport" }))
    

DailyReport - это метод действия вашего контроллера, Отчеты - это контроллер, и самое важное - FormMethod.Post , установив метод формы в POST, вы решите формат даты проблема.

Наслаждайтесь!

1 голос
/ 10 января 2012

Одной из возможных причин является то, что системная настройка формата даты / времени установлена ​​на США. Вы можете проверить это в Регион и Язык на Панели управления.

enter image description here

0 голосов
/ 10 января 2012
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
0 голосов
/ 10 января 2012

Ваш сервер, вероятно, работает в другой культуре. Если вы запускаете только один проект на своем сервере, вы можете изменить его культуру, как только что предложил Eoin Campbell

но если на вашем сервере запущены другие проекты, учитывающие культурную специфику, вы можете просто перевести поток вашего проекта в режим Великобритании следующим образом:

Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-GB")
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB")

Не влияет на все остальные вещи, работающие на сервере

...