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