настройка форматов даты с помощью Windows 7 / .NET / SQL Server - PullRequest
1 голос
/ 25 апреля 2011

Я недавно скопировал веб-приложение в новую установку Windows 7 и SQL Server 2008 R2. Приложение использует LINQ to SQL. Где-то вдоль линии разобрали строки даты POSTed облажались. Когда пользователь вводит строку даты, например 4/23/2011, приложение отклоняет ее, выдавая ошибку The value '04/23/2011' is not valid for Due. Due (фактически DueDate) - это поле DateTime в SQL Server.

Раньше это работало нормально. Я предположил, что это была проблема с настройками интернационализации ОС машины, поэтому я проверил, и форматы короткой и длинной даты установлены на MM/dd/yyyy и dddd, MMMM dd,yyyy соответственно, что для меня нормально. Язык базы данных SQL Server установлен на английский.

Частичный класс для этого свойства выглядит следующим образом:

[DisplayName("Due")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? DueDate { get; set; }

Должна быть другая настройка формата даты, которую мне нужно настроить. Где я должен искать?

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

Дополнительная информация: SP_CONFIGURE 'default language' Возвращает:

default language    0   9999    0   0

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

1 Ответ

0 голосов
/ 25 апреля 2011

Я предположил, что это проблема с настройками интернационализации ОС компьютера

Нет, он использует настройки интернационализации ПОЛЬЗОВАТЕЛЕЙ, указанные браузером на сервере.

приложение отклоняет его, выдавая ошибку. Значение '04 / 23/2011 'недопустимо для срока оплаты.

И это чисто плохое программирование. Вы должны всегда (!) Вводить даты либо через параметр, либо в форме ISO, которая полностью независима, если вы действительно настаиваете на создании строк SQL самостоятельно. Это будет 2011-04-23. SQL Server будет принимать этот формат независимо от локалей, установленных где-либо на клиенте или сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...