|
03.11.2017, 23:59 | #1 |
Участник
|
Цитата:
Сообщение от Slava Chernenko
Вань, это текущая версия кода или твой фикс?
В 2009 код был таким - как часто бывает кто-то пытался быть слишком смарт: X++: static int yearDiff(date d1, date d2) { int daysDiff = d1 - d2 - 1; if (daysDiff >= 0) return year(num2date(daysDiff)) - 1900; else return -1 * (year(num2date(-1 * daysDiff)) - 1900); } в результате код работает конечно намного лучше кода из 2009, но: - использование недокументированого поведения функции mkdate - 29 февраля приравнивается к 28 февраля в невисокосных годах, что отличается от старого поведения и к тому же вопрос использования 28 февраля vs 1 марта как даты соответствующей 29 февраля в невисокосных годах по-разному урегулирован в разных странах https://en.wikipedia.org/wiki/February_29 |
|