![](/img/trans.png)
[英]“DateTime->modify('+0 days')” Modifies DateTime Object
[英]Datetime->modify('second thursday') not working properly
我正在嘗試從日期時間開始第二個星期四。
$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');
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添加
在5.2.7之前的PHP 5中,如果某月中的某個工作日是該月的第一天,則請求在該月中的給定日期進行給定的出現會錯誤地將一個星期添加到返回的時間戳中。 在5.2.7和更高版本中,此問題已得到糾正。
嘗試這個,
echo date('Y-m-d', strtotime('second thursday of august 2013'));
試試這個。 我已經檢查過了,它顯示了想要的結果。
$test = new DateTime('2013-08-00 10:00');
echo $test->modify('second thursday'.$test->format('H:i'))->format('Y-m-d H:i');
$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對象中的日期,而不是代碼執行的日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.