Мне нужно повторить 3 предыдущих месяца из строки.Получить предыдущие месяцы из строки
$monthyear = "01/2015";
ВЫВОД
- 12/2014
- 11/2014
- 10/2014
Мне нужно повторить 3 предыдущих месяца из строки.Получить предыдущие месяцы из строки
$monthyear = "01/2015";
ВЫВОД
Идите и попробуйте следующее:
<?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
Источники:
Thnk вы сэр .. это очень полезно –
Так что вы пытаетесь сделать здесь получить диапазон (3 месяца назад до настоящего времени) с определенным интервалом (1 месяц). Это легко сделать с чем-то вроде класса PHP DatePeriod
.
Сначала вам нужно создать объект DateTime
из этой строки, который вы можете сделать, используя что-то вроде DateTime::createFromFormat
. Объект DateTime
может использоваться как ваш окончание печати.
$endRange = DateTimeImmutable::createFromFormat("m/Y", $monthyear);
Во-вторых, вы можете вычесть 3 месяца из этого DateTime
объекта с использованием DateTime::sub
для того, чтобы получить стартовый диапазон. Для этого вы используете объект DateInterval
, чтобы указать интервал времени, который вы хотите вычесть из объекта DateTime
.
$startRange = $endRange->sub(new DateInterval('P3M'));
Наконец, вы можете создать свой DatePeriod
объект с помощью $startRange
и $endRange
вместе с DateInterval
от 1 месяца и пройти через объект, чтобы получить 3 желаемые даты.
$period = new DatePeriod($startRange, new DateInterval('P1M'), $endRange);
foreach($period as $date) {
echo $date->format("m/Y");
}
Это должно дать вам желаемые даты 10/2014
, 11/2014
и 12/2014
.
http://php.net/manual/en/class.datetime.php – C2486
Возможный дубликат [Как я могу получить текущий месяц и предыдущие три месяца, используя PHP] (http://stackoverflow.com/questions/1594277/how-can-i-get-the-current-month-and-previous-three-months-using-php) – Chris