我需要从字符串中回显前3个月。
$monthyear = "01/2015";
输出
答案 0 :(得分:0)
所以你在这里尝试做的是在特定的时间间隔( 1个月<)获得范围的日期( 3个月前到现在) / em>的)。这可以通过PHP的DatePeriod
类轻松完成。
首先,您需要从该字符串创建一个DateTime
对象,您可以使用DateTime::createFromFormat
之类的内容创建该对象。此DateTime
对象可用作结束范围。
$endRange = DateTimeImmutable::createFromFormat("m/Y", $monthyear);
其次,您可以使用DateTime::sub
从DateTime
个对象中减去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/2014
,11/2014
和12/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
中测试此代码来源: