簡體   English   中英

周日的Strtotime功能錯誤

[英]Strtotime function bug on Sunday

每個星期天,strtotime功能在我的日程安排網站上做了奇怪的事情。 它顯示下周的日期而不是+2周。

我的代碼:

    date_default_timezone_set("Europe/Amsterdam");
    $time = time();
    //Check the date of Monday and Sunday from 2 weeks later.
    $monday = date( 'd-m-Y', strtotime( '+1 week monday' ) );
    $sunday = date( 'd-m-Y', strtotime( '+2 week sunday' ) );
    //Check the weeknumber of this week and add 2, so that it shows the weeknumber of 2 weeks later.
    $weekdata = date("W", strtotime('+1 day', $time));
    $weeknumber = $weekdata + 2;

$Weeknumber顯示正確的信息:42,但$monday$sunday顯示下周的星期一和星期日(2016年10月3日| 2016年10月9日),但我想讓它顯示(10-10-2016 | 16- 10-2016)

另外,有沒有辦法讓星期一星期一開始而不是星期日? 因為,在“本周”頁面上,它已經顯示了第26-09-2016周的數據 02-10-2016而不是19-09-2016 | 25-10-2016。

strtotime函數錯誤發生在PHP 5.5.31版上。 升級您的PHP版本或嘗試下面的修復程序。

所以我用if / else語句修復了bug。

    $time = time();
    //Check the date of monday and sunday from this week.
    //Strtotime() bug on PHP version 5.5.31. Bug report: https://bugs.php.net/bug.php?id=63740
    if(date("l") == "Sunday"){
        $monday = date( 'd-m-Y', strtotime( 'monday last week' ) );
        $sunday = date( 'd-m-Y', strtotime( 'sunday last week' ) );
        //Check the weeknumber of this week.
        $weeknumber = date("W", strtotime('+0 day', $time));
    } else {
        $monday = date( 'd-m-Y', strtotime( 'monday this week' ) );
        $sunday = date( 'd-m-Y', strtotime( 'sunday this week' ) );
        //Check the weeknumber of this week.
        $weeknumber = date("W", strtotime('+1 day', $time));
    }

由於這個bug只發生在星期天,我只在周日檢查if / else語句而不是其他日子。 如果今天不是星期天,它會運行else代碼,這是獲取本周數據的常規方法。 我會看到代碼是否在今天不是星期日,而是一周中的另一天,100%工作。

我只是想向將來訪問這個問題的人展示我對這個問題的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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