我想从约会时间开始第二个星期四。
$test = new DateTime('2013-08-02 10:00');
echo $test->modify('second thursday'.$test->format('H:i'))->format('Y-m-d H:i');
上述代码返回2013-08-15 10:00
而不是2013-08-08 10:00
但是当我使用以下代码时,它可以正常工作
$test = new DateTime('2013-08-02 10:00');
echo $test->modify('second wednesday'.$test->format('H:i'))->format('Y-m-d H:i');
答案 0 :(得分:1)
2013-August
月的第一天是Thursday
。
代码中存在错误,如果第一天是Thursday
,则第一天Thursday
将在下周发生,即8-August
,明智的第二天second Thursday
将来15-August
此代码将有所帮助
echo date('Y-m-d', strtotime('second thursday of august 2013'));
更新代码
$test = new DateTime('2013-08-02 10:00');
echo date('Y-m-d', strtotime("second thursday of august 2013")).' '.$test->format('H:i');
由RC
添加<强> From PHP strtotime manual page 强>
在5.2.7之前的PHP 5中,请求给定的给定事件 一个月的工作日,那个工作日是这个月的第一天 会错误地将一周添加到返回的时间戳。这有 已在5.2.7及更高版本中得到纠正。
答案 1 :(得分:0)
试试这个,
echo date('Y-m-d', strtotime('second thursday of august 2013'));
答案 2 :(得分:0)
试试这个。我已经检查过,它会显示你想要的结果。
$test = new DateTime('2013-08-00 10:00');
echo $test->modify('second thursday'.$test->format('H:i'))->format('Y-m-d H:i');
答案 3 :(得分:0)
$test = new DateTime('2013-08-02 10:00');
echo $test->modify('second thursday'.$test->format('H:i'))->format('Y-m-d H:i');
'第二个星期四'是指当前日期之后的第二个星期四。所以预期的结果是2013-08-15
。如果你想要给定月份的第二个星期四,你可以这样指定:
$test = new DateTime('2013-08-02 10:00');
echo $test->modify('second thursday of this month '.$test->format('H:i'))->format('Y-m-d H:i');
请注意,“本月”是指当前存储在DateTime对象中的日期,而不是代码执行日期。