You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:四位年份,例:2021
  • m:两位月份,补前导零,例:09
  • d:两位日期,补前导零,例:27
  • H:24小时制小时,补前导零,例:18
  • i:分钟,补前导零,例:05
  • s:秒,补前导零,例:03

内容的提问来源于stack exchange,提问作者Sven Lorenzino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:48:04