Что не так со значением TDateTime
У меня есть переменная TDateTime с именем currMonth. Значение currMonth равно 30.06.2000 23:59:59. Мне нужно вставить currMonth в качестве значения по умолчанию для поля в TDBGrid с именем dtBegin.
Я пытаюсь этот код:
dtBegin->AsDateTime = currMonth;
И компилятор успешно компилирует проект, но когда я отлаживаю его, я получаю значение dtBegin не "30.06.2000 11:59:59 PM", а { 36738.9999999884 }.
Кто-нибудь знает, что не так с этим объектом TDateTime?
Заранее спасибо.
1 ответ
Существует множество ответов на тот же вопрос, который вы разместили на форуме Embarcadero в то же время, что и здесь.
Одним словом, в этом нет ничего плохого. TDateTime
реализован в виде double
внутренне. Инспектор отладки просто показывает вам, что double
значение как есть, а не ожидаемая форматированная строка даты / времени. Это нормальное поведение, и ваш TDateTime
Сам будет хорошо работать в вашем коде. Вы используете более старую версию C++Builder, поэтому у вас нет TDateTime
визуализатор отладки, который есть в более новых версиях C++ Builder для отображения TDateTime
Ценности лучше, вот и все.
Если вам нужно увидеть TDateTime
значение в отформатированном виде внутри отладчика, вам нужно будет определить запись в списке наблюдения, который вызывает RTL DateTimeToStr()
функция или TDateTime::FormatString()
метод, и отображает результат для вас.