strtotime - 总是返回NEXT [在这里约会]

时间:2010-08-19 16:29:57

标签: php regex datetime date strtotime

我正在尝试使用strtotime函数以返回指定的以下日期。例如:

strtotime('thursday'); //Need to get NEXT Thurs, not today (assuming today is Th)

在这种情况下使用next thursday会有效,但不适用于绝对日期,例如:

strtotime('next aug 19'); //Should return 08-19-2011, but instead returns 12-31-1969

我认为这可能需要一些正则表达式,但由于输入的格式是如此可变,所以如果存在,我宁愿找到一个更简单的解决方案。

谢谢!

4 个答案:

答案 0 :(得分:1)

我无法理解。但是你可以要求当年,然后在必要时增加1年:

$d = new DateTime("Aug 19");
if (new DateTime() >= $d) {
    $d->add(new DateInterval("P1Y"));
}
echo $d->format(DateTime::W3C);

答案 1 :(得分:0)

你能否使用strtotime方法的第二个参数作为日期值来为你提供计算的基础而不是今天?因此,你可以将其设置为8月19日,然后在1年内进行一些计算。

答案 2 :(得分:0)

提出错误的问题会导致错误的答案。 “下一个8月19日”可能是明年,下一个千年,......

strtotime('+1 year aug 19'); //or strtotime('+1 week aug 19');

快乐编码

答案 3 :(得分:0)

这就是我的目标。由于帮助提出了解决方案,因此可以转到@Artefacto

$interval = 'thursday';
$oldtime = strtotime('now');
$newtime = strtotime($interval);
$i = 0;
while ($oldtime >= $newtime) {
    $newtime = strtotime($interval, strtotime("+" . $i*$i . " hours"));
    $i++;
}

echo date("Y-m-d h:i:s", $newtime);