簡體   English   中英

日期時間->修改(“第二個星期四”)無法正常工作

[英]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 ,則下個星期即第一個Thursday8-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添加

從PHP strtotime手冊頁

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM