Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Представление дат


Автор: Anark1 1.12.2007, 22:40
Интересует следующий вопрос.
Есть компонент TMonthCalendar, свойство Date которого, отображает выбранную дату.
В таком случае если в TMonthCalendar выбрана текущая дата (01.12.2007), то 
Код

AnsiString date, cdate;
...
date = DateToStr(Date()); // текущая дата - 01.12.2007
cdate = DateToStr(MonthCalendar1->Date); // дата из календаря - 01.12.2007
...

и эти переменные будут содержать одинаковые значения "01.12.2007".

А если мы изменим тип переменных с AnsiString на DATE или TDateTime, то
Код

DATE date, cdate
...
date = Date(); // значение - 39417
cdate = MonthCalendar->Date; // значение - <!!!> 39417.9418417245
...

Хотя мне не очень понятно почему 01.12.2007 это 39417, но пусть. Тогда почему одну и ту же дату из TMonthCalendar и дату, полученную из Date(), компилятор интерпретирует по-разному?

Автор: 586 1.12.2007, 23:01
Цитата(Anark1 @  1.12.2007,  22:40 Найти цитируемый пост)
cdate = MonthCalendar->Date; // значение - <!!!> 39417.9418417245

это Date()+Time()

Автор: Anark1 1.12.2007, 23:54
А можно еще узнать, так сказать с целью расширения кругозора, какая существует связь между
39417 и 01.12.2007 ?

Автор: volvo877 2.12.2007, 00:04
Цитата(Anark1 @  1.12.2007,  22:54 Найти цитируемый пост)
какая существует связь между
39417 и 01.12.2007 ? 

Цитата(Help)

A TDate value represents the number of days that have elapsed since 12/30/1899
Так что с 30 декабря 1899 до 1 декабря 2007 года прошло 39417 дней...

Автор: Anark1 2.12.2007, 00:35
volvo877, спасибо, а чем знаменательна эта дата ?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)