floor(($month*4+23)/10) — это формула для вычисления количества лишних дней, получившихся в результате предположения о том, что в каждом месяце 31 день ("$delsum = 365*$year+31*($month-1)+$day;" выше по тексту). Для января и февраля она не работает (выдаёт 2 и 3 дня вместо 0), поэтому там стоит if.
В php есть функция GregorianToJD (http://ru2.php.net/manual/en/function.gregoriantojd.php).
Возвращает количество дней, с начала времен по юлианскому календарю.
Ничто не мешает использовать ее, как аналог TO_DAYS()
> Самым главным критерием было совпадение результатов выполнения функции с результатами TO_DAYS() из MySQL
Но функция действительно полезная. Жаль я ее раньше не заметил. Спасибо
Извиняюсь за еще один пост, просто хочу отметить что функция, что эта, что MySQL'ная ведет себя не адекватно на датах года меньше 100. Хотя думаю в подавляющем большинстве задач это маловажно.
Пример:
TO_DAYS(«99-12-31») = 730484
TO_DAYS(«100-01-01») = 36525 /* 365,25 * 100 ;)*/
TO_DAYS(«1999-12-31») = 730484
PHP: порт функции TO_DAYS() из MySQL