проблема datetime.tostring в vb.net - PullRequest
0 голосов
/ 20 сентября 2009

У меня есть переменная для начальной даты, как показано ниже.

Dim startDate as Datetime

startDate = Convert.ToDateTime(datepicker1.text).ToString("dd-MMM-yyyy")

В ближайшем окне, если я попробую Convert.toDate (datepicker1.text) .toString ("dd-MMM-yyyy") дата показа 29 сентября 2009 г. но значение startDate составляет 09/29/2009

Я действительно не понимаю, почему значение не установлено в переменной startDate как 29-сент-2009

Есть мысли?

Ответы [ 3 ]

2 голосов
/ 20 сентября 2009

Вы просто видите другое представление одной и той же даты - ваш код работает просто отлично.

Ваше окно отладки показывает строковое представление структуры DateTime, вызывая ее метод ToString без каких-либо аргументов (так все окна отладки получают строковые представления любого объекта), который просто отображается по-разному.

Чтобы увидеть это в действии - попробуйте это в ближайшем окне:

Convert.ToDateTime(datepicker1.text).ToString()

и вы увидите тот же результат, что и в окне просмотра.

Важно помнить, что DateTime - это абстрактное понятие, которое может иметь много разных представлений. Также важно помнить, что если вы видите разные представления одних и тех же данных, это не меняет сам базовый тип.

0 голосов
/ 20 сентября 2009

Переменные даты и времени хранятся в виде числа периодов в 100 наносекунд с 12:00 полуночи 1 января 0001 г. н. Э. Когда вы присваиваете значение 29 сентября 2009 г., оно преобразуется в одно число.

Есть много способов представить это число. ToString ("dd-MMM-yyyy") указывает один формат (29 сентября 2009 г.), и в вашей системе есть несколько форматов по умолчанию, один из которых - 09/29/2009.

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

0 голосов
/ 20 сентября 2009

Попробуйте вместо этого:

Dim startDate as Datetime

startDate = DateTime.Parse(datepicker1.text);

Вы используете другой формат даты, чем тот, который используется в США, поэтому может потребоваться передать экземпляр IFormatProvider в качестве второго параметра в вызов DateTime.Parse.

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