问题:我需要找到两个给定日期之间的年月字符串,格式为“ Y-m”。
我有这个,但是不起作用:
for ($i = 0; $i <= 12; $i++) {
$months[] = date("Y-m%", strtotime(date('Y-m-01') . " -$i months"));
}
因为这是从今天开始,并且只持续12个月。
给定日期的示例:
11-2015 to 05-2018
答案 0 :(得分:2)
您可以使用DatePeriod获取2个DateTimes
之间的日期范围,然后使用DateTime::format()从这些日期获取所需的日期字符串(在您的情况下为'Y- m'):
<?php
$dates = new DatePeriod(new DateTime('2015-01'), new DateInterval('P1M'), new DateTime('2018-05'));
$date_strings = array_map(function($d) { return $d->format('Y-m'); }, iterator_to_array($dates));
print_r($date_strings);
礼物:
Array
(
[0] => 2015-01
[1] => 2015-02
[2] => 2015-03
[3] => 2015-04
[4] => 2015-05
[5] => 2015-06
...
[39] => 2018-04
)
答案 1 :(得分:1)
正确方法:
$date1=$s_list_102."-".$s_list_101."-01"; //month and year merge on date 1
$date2=$s_list_104."-".$s_list_103."-01"; //month and year merge on date 1
$d1 = strtotime($date1);
$d2 = strtotime($date2);
$min_date = min($d1, $d2);
$max_date = max($d1, $d2);
$c = 0;
while (($min_date = strtotime("+1 MONTH", $min_date)) <= $max_date) {
$c++;
}
for ($i = 0; $i <= $c; $i++) {
$months[] = date("M-y", strtotime(date($date2) . " -$i months"));
}