Функция C # Convert.ToDateTIme считывает дату как "дд / мм / гггг" или "мм / дд / гггг"? - PullRequest
7 голосов
/ 21 апреля 2009

Функция Cvert Convert.ToDateTIme считывает дату как "дд / мм / гггг" или "мм / дд / гггг"?

У меня на локальном компьютере есть такое же приложение, которое я загрузил на удаленный общий сервер. Он отлично работал на моей локальной машине с надписью "дд / мм / гггг", но на моей удаленной машине, кажется, даты читаются как "мм / дд / гггг". У меня одинаковые настройки культуры "en-GB" на обоих.

Я считаю это преобразование даты очень непредсказуемым. Может ли кто-нибудь порекомендовать способ чтения строк дат из базы данных SQL Server 2005, не требующий использования культуры?

Ответы [ 3 ]

4 голосов
/ 21 апреля 2009

Ну, по звукам ... Одна из настроек на сервере отключена.

Я бы выбрал параметры "Регион и язык" с зубной расческой и убедился, что что-то не переопределено, но если это не удастся.

Вы можете попробовать явно установить информацию о культуре

         string x = "21/01/2009";

        CultureInfo ci = new CultureInfo("en-GB");

        Convert.ToDateTime(x, ci);
3 голосов
/ 21 апреля 2009

Почему бы просто не использовать тип данных datetime? Затем из вашего средства чтения данных sql используйте: reader.GetDateTime (int column)

Другой вариант: если вам нужно передавать даты в строках, используйте формат ISO: yyyy-MM-dd

2 голосов
/ 21 апреля 2009

Как ваши даты на самом деле хранятся в SQL Server? Если они хранятся как datetime, тогда вы сможете прочитать их как значения DateTime и не должны использовать Convert.ToDateTime (). Можете ли вы показать нам запрос и / или код C #?

Редактировать

Вы скинули меня с упоминания о SQL Server в конце вашего вопроса! Рассматривали ли вы использовать DateTimePicker вместо TextBox? ASP.NET имеет элементы управления выбора даты, верно? Тогда он может сделать разбор для вас.

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