在第二天上午10点创建Unix时间戳

时间:2012-09-10 22:01:22

标签: php

嗨假设我的时间戳为“2005-10-16 13:05:41”。

我如何创建一个变量,该变量将在下一次从该初始点开始上午10点时具有unixtime?

会是这样的吗?

$timestamp = "2005-10-16 13:05:41";
$tenAMTime = strtotime("next 10am", $timestamp);

我猜我可以使用一些字符串来做到这一点?就像PHP文档中的“下周四”一样。

2 个答案:

答案 0 :(得分:5)

你几乎拥有它......

$tomorrowAt10Am = strtotime('+1 day 10:00:00', $timestamp);

编辑: 这是基于您的问题的标题,上午10点的时间戳第二天。如果你想在上午10点之前的任何时间输出上午10点,那么你会想要添加一些额外的逻辑,正如thatidiotguy建议的那样。

<强> EDIT2:

由于某些原因,如果将所有逻辑放在同一个strtotime方法中,它将无法工作,所以我做了一个简单的函数。您可以轻松地将其放入一行,但我将其保留为2以使其更清晰:

$time1 = strtotime('-2 days 09:59:59');
$time2 = strtotime('-2 days 10:00:01');

function next_10am($time)
{
    $temp = strtotime('+1 day -10 hours', $time);
    return strtotime('10:00', $temp);
}

echo next_10am($time1); // Outputs: 2012-09-08 10:00:00
echo next_10am($time2); // Outputs: 2012-09-09 10:00:00

答案 1 :(得分:2)

strtotime无法知道上午10点是否已经过去了,所以我会这样做:

$timestamp = strtotime("2005-10-16 13:05:41");
// Get current hour and if it is > 10 add a day
if (date('G',$timestamp) >= 10) {
    $tenAMTime = strtotime("+1 day 10am", $timestamp);
}
else {
    $tenAMTime = strtotime("10am", $timestamp);
}
echo date('r',$tenAMTime); // Comment this out if you want