|
|
#1 |
|
Злыдни
|
dateNull() и endMth()
Наступил на фичу и решил поделиться. Все мы знаем, что dateNull() = 01\01\1900. Но для меня было неочевидно, что с dateNull() великолепно работают функции endMth() и пр., возвращая 31\01\1900 и т.п. соответственно
Долго же я ломал голову, когда в конструкцииX++: TransDate myDate = MyTable::getPeriod();
;
if (!mydate)
myDate = systemDateGet()
|
|
|
|
|
#2 |
|
Administrator
|
Хочется добавить, что ЛЮБЫЕ даты 1900-го года воспринимаются также как datenull().
Т.е. X++: date d = 31\12\1900; if (!d) { info("пусто!"); } Но 0 видимо для типа date не является ложью (false) в выражении if (!date), поэтому система спокойно идет себе дальше....
__________________
Возможно сделать все. Вопрос времени |
|
|
|
|
#3 |
|
Злыдни
|
Цитата:
Функции работают с dateNull() как с обычными датами. Причем, что интересно, явное присвоение переменной любой даты из 1900-го года сбрасывает ее значение на 01\01\1900. А присвоение ей значения из того же диапазона с помощью встроенных функций работает как с любыми другими датамиX++: TransDate testDate;
;
testDate = 01\02\1900;
info(date2strXpp(testDate)); // 01\01\1900
if (!testDate)
info("Дата пустая"); //условие отрабатывает
testDate = endMth(dateNull()) + 1;
info(date2strXpp(testDate)); // 01\02\1900
if (!testDate)
info("Дата пустая"); //условие не отрабатываетПоследний раз редактировалось Yprit; 05.09.2008 в 08:47. Причина: добавил про отладчик |
|
|
|
| За это сообщение автора поблагодарили: alex55 (1), Vlad_ (1). | |