Php 如何获取上一个';凌晨4点';?

Php 如何获取上一个';凌晨4点';?,php,time,Php,Time,我想获得前一个“上午4点”的时间(标准时间()格式),单位为秒 我的第一次尝试是:mktime(4,0,0) 这适用于一天中的每个时间,除了00:00和04:00之间,因为它将给出下一个“凌晨4点”的时间 那么我该如何解决这个问题呢 如果你创造的时间是在未来,减去一天。如果你创造的时间是在未来,减去一天。很好。我以为你必须做$results=strottime(“昨天”)+(60*60*4);但是它的工作原理更加优雅。strotime()是一个非常神奇的函数。如果时间是[0:00,4:00],

我想获得前一个“上午4点”的时间(标准时间()格式),单位为秒

我的第一次尝试是:
mktime(4,0,0)

这适用于一天中的每个时间,除了00:00和04:00之间,因为它将给出下一个“凌晨4点”的时间

  • 那么我该如何解决这个问题呢

如果你创造的时间是在未来,减去一天。

如果你创造的时间是在未来,减去一天。

很好。我以为你必须做$results=strottime(“昨天”)+(60*60*4);但是它的工作原理更加优雅。strotime()是一个非常神奇的函数。如果时间是[0:00,4:00],他只想要昨天@weston:啊,是的,好吧,我错了——我理解“last 4am”是指“这4am之前的一个”,但他想要“最近的4am”。我知道strotime()适用于“last saturday”之类的东西,所以我尝试了“last 4am”直接但没有运气。哦,很好。我以为你必须做$results=strotime(“昨天”)+(60*60*4);但这工作更优雅。strotime()是一个非常神奇的函数。如果时间是[0:00,4:00],他只想要昨天@weston:啊,是的,好的,我错了——我理解“last 4am”是指“这4am之前的那个”,但他想要“最近的凌晨4点。”我知道strotime()适用于像“上周六”这样的东西,所以我直接尝试了“最后的凌晨4点”,但没有运气。哦,好吧。
$now    = new DateTime();
$fourAm = new DateTime('today 4am');

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

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

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