Как проверить, сколько дней прошло с отметки времени - считая дни в полночь - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь узнать, сколько дней прошло с определенной отметки времени, но проблема в том, что я не могу настроить ее, чтобы после полуночи считать ее как другой день.

Вот что я попробовал:

<?php
$now = time(); // or your date as well
$your_date = 1572123244;
$datediff = $now - $your_date;

echo round($datediff / (60 * 60 * 24));

Если я поставлю отметку времени за пять минут до полуночи (1572134100), через пять минут после полуночи должно появиться «один день прошел»

1 Ответ

0 голосов
/ 27 октября 2019

Обычный способ подсчета дней, прошедших с данной отметки времени, будет выглядеть примерно так:

$dt = date_create_from_format('U', 1572046200);
$diff = $dt->diff(new DateTime());

echo $diff->days;

Но это считает полные 24-часовые периоды днями. В вашем случае вы хотите считать календарные даты независимо от времени суток. Я бы порекомендовал затем поставить отметку времени до полуночи.

$dt = date_create_from_format('U', 1572047700);
$dt->setTime(0, 0); // set time to 00:00

$now = new DateTime('now', new DateTimeZone('UTC')); // time now, but in UTC 
$now->setTime(0, 0); // set time to 00:00
$diff = $dt->diff($now);

echo $diff->days;

Я не уверен в вашем текущем часовом поясе, но временные метки по природе указаны в UTC, поэтому вам, вероятно, следует также нормализовать свое местное время по UTC.

Что делает этот код, так это то, что он устанавливает как сегодняшнюю дату, так и отметку времени, с которой вы сравниваете, с полуночью дня UTC, а затем вычисляет разницу между ними. Принимая время вне уравнения, это всегда будет считать полные 24-часовые дни.

...