日期格式M-Y

时间:2019-06-26 17:12:18

标签: php symfony date

我正在尝试使用'M-Y'format('M-Y')的格式查找最近的12个日期,但出现类似以下错误:

  

类:“ Symfony \ Component \ Debug \ Exception \ FatalThrowableError”
  消息:“在字符串上调用成员函数format()”

我已经尝试过

$date = new DateTime();
$mois = $date->format('M-Y');
$mois1 = $date->format('Y-m-d');
array_push($format1, $mois);
array_push($format2, $mois1);

结果不是我所期望的。我得到Jun-2019 12次。

我的代码是这样:

public function getMonthLibelleByDates($filtre) {
        $format1 = []; $format2 = [];
        $month = time();
        for ($i = 1; $i <= 12; $i++) {
            $month = strtotime('last month', $month);
            $months[] = date("r", $month);
        }
        foreach($months as $mois) {
            array_push($format1, $mois->format('M-Y'));
            array_push($format2, $mois->format('Y-m-d'));
        }
        $response = array(
            'format1'=> $format1,
            'format2' =>  $format2      
        );
        return $response;  
    }

我希望支出是从当前日期算起的最近12个月。

2 个答案:

答案 0 :(得分:1)

您似乎正在混用时间戳记,date()字符串和DateTime对象。

您可以做的是从今天开始创建一个DateTime对象,然后在12个迭代循环中对其进行修改以减去一个月。在每次迭代中添加格式,然后返回响应。

public function getMonthLibelleByDates($filtre) {
    $format1 = []; 
    $format2 = [];
    $date = new DateTime();

    for ($i = 1; $i <= 12; $i++) {
        $format1[] = $date->format("M-Y");
        $format2[] = $date->format("Y-m-d");
        $date->modify("-1 month");
    }

    return array(
        'format1'=> $format1,
        'format2' =>  $format2      
    );
}

作为旁注,似乎未使用参数$filtre,因此它可能会被删除?

答案 1 :(得分:1)

有一种最简单的方法来实现这一目标...

var_dump(getMonthLibelleByDates());

function getMonthLibelleByDates() {
    $res = [
        'format1' => [],
        'format2' => []
    ];
    $timestampBuffer = NULL;

    for ($i = 1; $i <= 12; $i++) {
        $timestampBuffer = strtotime("-$i month");

        $res['format1'][] = date('M-Y', $timestampBuffer);
        $res['format2'][] = date('Y-m-d', $timestampBuffer);
    }

    return $res;
}

打印...

array(2) {
    ["format1"]=>
  array(12) {
        [0]=>
    string(8) "May-2019"
        [1]=>
    string(8) "Apr-2019"

    //... (too long)

        [10]=>
    string(8) "Jul-2018"
        [11]=>
    string(8) "Jun-2018"
  }
  ["format2"]=>
  array(12) {
        [0]=>
    string(10) "2019-05-26"
        [1]=>
    string(10) "2019-04-26"

    //... (too long)

        [10]=>
    string(10) "2018-07-26"
        [11]=>
    string(10) "2018-06-26"
  }
}