PHP获取周首尾日期返回DateTime对象 如何正确输出取值?
问题解决方法
错误根因
- 第一处错误:代码中
$day = print_r($day );逻辑错误。print_r()方法默认直接打印内容,返回值为布尔值true,你这行代码直接把原本存储日期数组的$day变量覆盖为布尔值,后续访问自然会出现布尔值无法取下标的警告。 - 第二处错误:
first_day、last_day对应的值都是DateTime对象,不是数组,不能用['date']这种数组下标方式访问属性,需要使用DateTime类提供的format()方法格式化输出需要的日期内容。
正确代码示例
function get_first_and_last_day_of_week( $year_number, $week_number ) { $today = new DateTime( 'today' ); return [ 'first_day' => clone $today->setISODate( $year_number, $week_number, 1 ), 'last_day' => clone $today->setISODate( $year_number, $week_number, 7 ) ]; } $day = get_first_and_last_day_of_week(2021, 39); // 输出周一的日期 格式:年-月-日 echo $day['first_day']->format('Y-m-d'); // 输出周日的日期 格式:年-月-日 时:分:秒 echo $day['last_day']->format('Y-m-d H:i:s');
扩展说明
format()方法可以根据你的需求自定义输出格式,常用的格式符如下:
Y:四位年份,例:2021m:两位月份,补前导零,例:09d:两位日期,补前导零,例:27H:24小时制小时,补前导零,例:18i:分钟,补前导零,例:05s:秒,补前导零,例:03
内容的提问来源于stack exchange,提问作者Sven Lorenzino
相关产品推荐
相关产品推荐

