Convert.ToDatetime без добавления метки времени - PullRequest
1 голос
/ 18 октября 2010

Например:

Dim testdate As String = "29/10/2010"
testdate = Convert.ToDateTime(testdate.ToString)
Response.Write(testdate)

ожидаю "29/10/2010 00:00:00", что я получаю "29/10/2010"

Ответы [ 3 ]

3 голосов
/ 18 октября 2010

Вы должны присвоить результат Convert.ToDateTime объекту DateTime, а не строке.

Dim testdate As String = "29/10/2010"
Dim date As DateTime = Convert.ToDateTime(testdate)
Response.Write(date)

При этом будут напечатаны часы и дата в формате по умолчанию для вашего аппарата.

1 голос
/ 18 октября 2010

Большая проблема, как упоминалось в других публикациях, заключается в том, что вы неявно присваиваете результат DateTime операции Convert строковой переменной.Это даже не передало бы компилятор в C #, так что вы попадаете в сферу того, как VB работает с этими неявными присваиваниями, и вы, вероятно, не захотите быть там, потому что если какая-то часть спецификации языка изменится в новой версии Framework, и выПопытайтесь перенести ваш код, возможно, у вас может быть неприятная ошибка, которую вы можете попытаться найти (возможно, здесь это не так важно, но в других случаях да).Лучше всего было бы переписать блок кода, чтобы операция Convert была назначена объекту DateTime, но более простым решением было бы бросить .ToString () в конец строки Convert.ToDateTime (testdate) (т. Е. Testdate = Convert.DateTime (testdate) .ToString (), который оставит testdate с датой и отметкой времени, отформатированными в текущей культуре (поскольку вы сейчас выполняете явное преобразование между DateTime и строкой назначения).

0 голосов
/ 18 октября 2010

Как ясно задокументировано здесь , нет, это не спроектированное поведение.
'05 / 01/1996 'конвертируется в 01.05.1996 12:00:00.
«Вторник 28 апреля 2009 года» конвертируется в 28.04.2009 12:00:00.

Возможно, что эта статья может дать понимание.

...