我长时间缠着我的头,我想做的是获取本周开始和结束的日期。
本周从5月20日(星期一)到5月26日(星期日)
我的方法:
//GETTING DATA FOR CURRENT WEEK
$dtFrom_current = new DateTime; // get current date
$dtTo_current = new DateTime;
$dtFrom_current->setISODate($dtFrom_current->format('o'), $dtFrom_current->format('W'));
$dtTo_current->setISODate($dtTo_current->format('o'), $dtTo_current->format('W') );
// add 1 day
$dtTo_current->add(new DateInterval('P1D') + 1 );
// convert to iso date for database use
echo $dFrom_current = $dtFrom_current->format('Y-m-d');
echo $dTo_current = $dtTo_current->format('Y-m-d');
但是,我确定我做错了什么,但不知道是什么,感谢您的帮助。
答案 0 :(得分:2)
您可能只是在这里错过了一个小细节。
首先,DateInterval
应该以间隔指定格式接收其参数。请参阅https://php.net/manual/en/dateinterval.construct.php。
此外,您只需要将间隔增加1天,并根据要达到的目标增加6天:
$dtTo_current->add( new DateInterval( 'P6D' ) );
看看重构后的代码并进行测试:
//GETTING DATA FOR CURRENT WEEK
$dtFrom_current = new DateTime; // get current date
$dtTo_current = new DateTime;
$dtFrom_current->setISODate( $dtFrom_current->format( 'o' ), $dtFrom_current->format( 'W' ) );
$dtTo_current->setISODate( $dtTo_current->format( 'o' ), $dtTo_current->format( 'W' ) );
// add 1 day
$dtTo_current->add( new DateInterval( 'P6D' ) );
// convert to iso date for database use
echo $dFrom_current = $dtFrom_current->format( 'Y-m-d' );
echo "\n";
echo $dTo_current = $dtTo_current->format( 'Y-m-d' );