我正在尝试使用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
我认为这可能需要一些正则表达式,但由于输入的格式是如此可变,所以如果存在,我宁愿找到一个更简单的解决方案。
谢谢!
答案 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);