从字符串获取前几个月

时间:2016-02-10 17:48:14

标签: php string date

我需要从字符串中回显前3个月。

$monthyear = "01/2015";

输出

  1. 二千零一十四分之十二
  2. 二千零十四分之十一
  3. 二千零十四分之十

2 个答案:

答案 0 :(得分:0)

所以你在这里尝试做的是在特定的时间间隔( 1个月<)获得范围的日期( 3个月前到现在) / em>的)。这可以通过PHP的DatePeriod类轻松完成。

首先,您需要从该字符串创建一个DateTime对象,您可以使用DateTime::createFromFormat之类的内容创建该对象。此DateTime对象可用作结束范围

$endRange = DateTimeImmutable::createFromFormat("m/Y", $monthyear);

其次,您可以使用DateTime::subDateTime个对象中减去3个月,以获得起始范围。为此,您可以使用DateInterval对象指定希望从DateTime对象中减去的时间间隔。

$startRange = $endRange->sub(new DateInterval('P3M'));

最后,您可以使用DatePeriod$startRange以及1个月的$endRange创建DateInterval对象,并遍历该对象以获得3个所需日期。

$period = new DatePeriod($startRange, new DateInterval('P1M'), $endRange);

foreach($period as $date) {
    echo $date->format("m/Y");
}

这应该会为您提供所需的日期10/201411/201412/2014

答案 1 :(得分:0)

继续尝试以下内容:

<?php
    // Given string:
    $monthyear = "01/2015";

    // Init DateTime object:
    $datetime = new DateTime();
    // Create a new datetime instance, and parse given string:
    $date = $datetime->createFromFormat('m/Y', $monthyear);

    // Loop for 3 iterations:
    for ($i = 1; $i <= 3; $i++) {
        // Print current date:
        echo $i . ". " . ($date->format('m/Y')) . "<br>";
        // Reduce one month:
        $date = date_add($date, date_interval_create_from_date_string('-1 months'));
    }

?>

Yealds:

1. 01/2015
2. 12/2014
3. 11/2014 

您可以在phpfiddle.org

中测试此代码

来源: