Как мне узнать время предыдущего «4 утра»? - PullRequest
1 голос
/ 06 февраля 2012

Я хотел бы получить время в секундах (стандартный формат времени ()) предыдущего «4 часа утра».

Моя первая попытка была: mktime(4,0,0).

Это работаетдля каждого времени дня, кроме между 00:00 и 04:00, потому что это даст время следующего '4 утра'.

  • Так как мне решить эту проблему?

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012
$now    = new DateTime();
$fourAm = new DateTime('today 4am');

if ($now < $fourAm) {
    $time = strtotime('yesterday 4am');
} else {
    $time = $fourAm->getTimestamp();
}

Где $time - это отметка времени "последних 4 часов утра", независимо от того, сколько времени в данный момент.

Редактировать:

Вы можететакже делайте это без объектов DateTime, но мне нравится этот набор классов, поэтому я обычно нахожу любую причину для их использования.: -P

$now    = time();
$fourAm = strtotime('today 4am');

if ($now < $fourAm) {
    $time = strtotime('yesterday 4am');
} else {
    $time = $fourAm;
}
2 голосов
/ 06 февраля 2012

Если время, которое вы создали, находится в будущем, вычтите один день.

0 голосов
/ 06 февраля 2012
$date = strtotime('yesterday 4am');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...