周日的 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
显示下周的星期一和星期日 (03-10-2016 | 09-10-2016),但我想要展示 (10-10-2016 | 16-10-2016)
另外,有没有办法让每周从星期一而不是星期日开始?因为,在 "this week" 页面上,它已经显示了 26-09-2016 周的数据 | 02-10-2016 而不是 19-09-2016 | 25-10-2016.
strtotime 函数错误发生在 PHP 版本 5.5.31 上。升级您的 PHP 版本或尝试以下修复。
所以我用 if/else 语句修复了错误。
$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));
}
因为这个错误只发生在星期天,所以我做了 if/else 声明只检查星期天而不检查其他日子。如果今天不是星期天,它会运行 else 代码,这是获取本周数据的正常方式。当今天不是星期天,而是一周中的另一天时,我会看看代码是否 100% 有效。
我只是想向将来访问此问题的人展示我对这个问题的解决方案。
每个星期天,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
显示下周的星期一和星期日 (03-10-2016 | 09-10-2016),但我想要展示 (10-10-2016 | 16-10-2016)
另外,有没有办法让每周从星期一而不是星期日开始?因为,在 "this week" 页面上,它已经显示了 26-09-2016 周的数据 | 02-10-2016 而不是 19-09-2016 | 25-10-2016.
strtotime 函数错误发生在 PHP 版本 5.5.31 上。升级您的 PHP 版本或尝试以下修复。
所以我用 if/else 语句修复了错误。
$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));
}
因为这个错误只发生在星期天,所以我做了 if/else 声明只检查星期天而不检查其他日子。如果今天不是星期天,它会运行 else 代码,这是获取本周数据的正常方式。当今天不是星期天,而是一周中的另一天时,我会看看代码是否 100% 有效。
我只是想向将来访问此问题的人展示我对这个问题的解决方案。