Продолжаем изучать неочевидное поведение функций php.
Рассмотрим такой код:
Кажется, что здесь выполняется лишняя работа. Сначала мы берем таймштамп, возвращаемый функцией
Неочевидность в том, что строка времени в формате
Добавляем немного вывода и видим:
Таким образом, данный код можно считать одним из способов получения таймптампа начала текущего дня.
Рассмотрим такой код:
$var = strtotime(date('d.m.Y', time()));
Кажется, что здесь выполняется лишняя работа. Сначала мы берем таймштамп, возвращаемый функцией
time()
, и на его основе получаем строку времени определенного формата. Далее мы преобразуем полученную строку времени обратно в таймштамп. И логично, что таймштампы должны совпадать. Но нет.Неочевидность в том, что строка времени в формате
"d.m.Y"
преобразуется в таймштамп начала дня, то есть "d.m.Y"
аналогичен "d.m.Y 00:00:00"
. Добавляем немного вывода и видим:
$ts = time();
$var = strtotime(date('d.m.Y', $ts));
var_dump(date('d.m.Y H:i:s', $ts)); // string(19) "01.06.2020 22:36:09"
var_dump(date('d.m.Y H:i:s', $var)); // string(19) "01.06.2020 00:00:00"
$varDayStart = strtotime(date('d.m.Y 00:00:00', $ts));
var_dump($var === $varDayStart); // bool(true)
Таким образом, данный код можно считать одним из способов получения таймптампа начала текущего дня.