如何在PHP中显示当前一周的开始和结束日期?

时间:2019-05-25 17:52:05

标签: php date datetime

我长时间缠着我的头,我想做的是获取本周开始结束的日期。

本周从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');  

但是,我确定我做错了什么,但不知道是什么,感谢您的帮助。

1 个答案:

答案 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' );