2013-04-23 3 views
0

Я одна строка, это выглядит как формат даты 01/04/2013Convert.ToDateTime() Выпуск

string date="01/04/2013" Для

выше формат строки Лик: с 01 Дата, 04 Месяц и 2013 год.

Теперь я использую convert.todatetime()

Смотрите ниже:

DateTime **DateTimeValue** =Convert.ToDateTime(date); 

DateTimeValue возвращение в моей системе: 01-04-2013T00:00:00// Дата первого и второго месяца

Но при преобразовании того же DateTimeValue - это возврат в другую систему :04-01-2013T00:00:00// Месяц 1-й и 2-й даты

Почему Convert.DateTime() возвращается другой, другая дата в другой системе ????

Ответ:

Теперь я изменил мой DataBase Coloumn DataType DateTime в NVARCHAR. Поэтому мне не нужно конвертировать в DateTime. и это работает во всей системе.

Благодаря парень

+1

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

+0

Возможно, это связано с настройками культуры - это было бы моим первым предположением. – Tim

+0

Похоже, что проблема настройки/локализации культуры. Смотрите: http://stackoverflow.com/questions/5798908/how-to-produce-localized-date-string-with-cultureinfo – jordanhill123

ответ

0

Это региональный/локализации настройки вещи. Способ гарантировать это не происходит, не зная об этих настройках, - это настроить строку даты следующим образом: yyyy-mm-dd, например. 2013-04-01 который всегда будет рассматриваться как 1 апреля 2013 г.

Более подробную информацию о Convert.ToDateTime здесь: http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx

Соответствующий бит:

Если значение не равно нулю, то возвращаемое значение является результатом вызывая метод DateTime.Parse для значения с использованием информации форматирования в объекте DateTimeFormatInfo, который инициализируется для текущей культуры.

0

Если вы перейдете на панель управления на своем ПК, появится опция для региона и языка (это может отличаться в зависимости от вашей версии Windows). Здесь вы можете указать формат длинных и коротких дат и времени.

Если вы хотите, чтобы формат был точно таким же, используйте метод ToString() в datetime с установленным форматом, описанным here.

3

Почему Convert.DateTime() возвращает другую, другую дату в другой системе ????

Потому что он использует текущую культуру для преобразования строки в дату и время. В какой-то культуре месяц идет до даты и в других наоборот.

Вы можете указать культуру или использовать CultureInfo.InvariantCulture (что похоже на en-US) или вы можете использовать DateTime.ParseExact, где вы можете указать формат.

string date="01/04/2013"; 
// day 4 month 1 
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture); 

или

// day 4 month 1 
DateTime dt = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

В целом это хорошая идея, чтобы использовать TryParse методы для обнаружения, если вход находится в правильном формате.

0

вы можете попробовать это:

string date = "01/04/2013"; 
     DateTime dtTime; 
     if (DateTime.TryParseExact(date, "dd/MM/yyyy", 
      System.Globalization.CultureInfo.InvariantCulture, 
      System.Globalization.DateTimeStyles.None, out dtTime)) 
     { 
      Console.WriteLine(dtTime); 
     } 
Смежные вопросы