Pull to refresh

А в каждом ли дне 24 часа?

Reading time1 min
Views567
Сегодня наткнулся на функцию, которая должна вычислять количество дней между датами, внутри нее было написанно примерно следующее:

$arr_mk = mktime (0, 0, 0, date('m', strtotime($arr_date)), date('d', strtotime($arr_date)), date('Y', strtotime($arr_date)));
$dep_mk = mktime (0, 0, 0, date('m', strtotime($dep_date)), date('d', strtotime($dep_date)), date('Y', strtotime($dep_date)));

$mk_diff = $dep_mk - $arr_mk;
$days = bcdiv($mk_diff/86400); // 60*60*24

Вроде все верно на первый взгляд, но работала она подозрительно.

Погуглив нашел подобный код на phpclub'е.
А проблема вот в чем:
разница между '27-03-2009' и '30-03-2009' — 2 дня.
разница между '27-04-2009' и '30-04-2009' — 3 дня.
Подозрительно, думал меня уже подглючивает под конец дня, ан-нет. Таки неверно.
А вся проблема вот в чем.
29 марта в дне 23 часа, из за перевода времени, итого выходило не 3, а 2.95 и bcdiv выдвал 2.
Аналогично подумал что в 25 октября 25 часов — так оно и есть.
Вот так вот бывает, никому нельзя верить :)
Tags:
Hubs:
Total votes 23: ↑19 and ↓4+15
Comments21

Articles