03.11.2017, 00:23 | #10 |
Участник
|
Цитата:
Сообщение от Slava Chernenko
X++: static void yearDiff_test(Args _args) {; // AX 2009 5.0.1500.4570 info(strfmt('%1', yearDiff(28\2\2017, 28\2\1976))); // returns 41 - OK info(strfmt('%1', yearDiff(1\3\2017, 29\2\1976))); // returns 41 - OK info(strfmt('%1', yearDiff(28\2\2017, 29\2\1976))); // returns 40 - arguable info(strfmt('%1', yearDiff(1\3\2017, 1\3\1976))); // returns 40 - wtf? info(strfmt('%1', yearDiff(2\3\2117, 1\3\1976))); // returns 140 - WTF!? } X++: static int yearDiff(date d1, date d2) { date boundary; int offset; if ( d1 < d2) { boundary = mkDate(dayOfMth(d1), mthOfYr(d1), year(d2)); offset = (d2 - boundary) < 0 ? -1 : 0; } else { boundary = mkDate(dayOfMth(d2), mthOfYr(d2), year(d1)); offset = (d1 - boundary) < 0 ? 1 : 0; } return year(d1) - year (d2) - offset ; } |
|