php 按日期循环,PHP:在日期范围内循环播放所有月份?_alphameow的博客-程序员宅基地

技术标签: php 按日期循环  

7 个答案:

答案 0 :(得分:74)

尝试

$start = $month = strtotime('2009-02-01');

$end = strtotime('2011-01-01');

while($month < $end)

{

echo date('F Y', $month), PHP_EOL;

$month = strtotime("+1 month", $month);

}

相对月份值是根据它们经过的月份长度计算的。一个例子是“+ 2个月2011-11-30”,这将产生“2012-01-30”。这是因为11月份为30天,12月为31天,共计61天。

答案 1 :(得分:34)

$start = new DateTime('2009-02-01');

$interval = new DateInterval('P1M');

$end = new DateTime('2011-01-01');

$period = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {

echo $dt->format('F Y') . PHP_EOL;

}

答案 2 :(得分:19)

接受的答案不是正确的方法。

我尝试了这个代码段并且无法正常运行。如果您的开始日期是月末,而结束日期是第3个月的开始日期。

例如:2014-08-31 - 2014-10-01

预计应该是。

八月

九月

十月

更好的解决方案是:

$start = new DateTime('2010-12-02');

$start->modify('first day of this month');

$end = new DateTime('2012-05-06');

$end->modify('first day of next month');

$interval = DateInterval::createFromDateString('1 month');

$period = new DatePeriod($start, $interval, $end);

foreach ($period as $dt) {

echo $dt->format("Y-m") . "
\n";

}

答案 3 :(得分:2)

$start = strtotime('2011-09-01');

$end = strtotime('2013-12-01');

while($start < $end)

{

echo date('F Y', $start) . '
';

$start = strtotime("+1 month", $start);

}

答案 4 :(得分:2)

我喜欢接受的答案的简单性,但作为3s2ng,它并不总是有效。所以我这样推文:

$start = strtotime('2009-02-01');

$startmoyr = date('Y', $start) . date('m', $start);

$end = strtotime('2013-12-01');

$endmoyr = date('Y', $end) . date('m', $end);

while ($startmoyr <= $endmoyr) {

echo date("F Y", $start) . "
";

$start = strtotime("+1month", $start);

$startmoyr = date('Y', $start) . date('m', $start);

}

答案 5 :(得分:1)

我有一个结果最佳的方法:

$begin = new DateTime( '2014-07-14' );

$end = new DateTime( '2014-08-01' );

$end = $end->modify( '+1 month' );

$interval = DateInterval::createFromDateString('1 month');

$period = new DatePeriod($begin, $interval, $end);

foreach($period as $dt) {

var_dump($dt->format( "m" ));

}

@Glavic方法的加号

答案 6 :(得分:0)

根据戈登的回答,这是我实际需要的工作方式您需要在这两个月之间的所有时间。

$end = strtotime(date("Y-m-01"));

$start = $month = strtotime("-12 months", $end);

while ( $month < $end ) {

echo date("Y-m-d", $month));

$month = strtotime("+1 month", $month);

}

如果我现在执行此代码,则结果如下:

2018-05-01

2018-06-01

2018-07-01

2018-08-01

2018-09-01

2018-10-01

2018-11-01

2018-12-01

2019-01-01

2019-02-01

2019-03-01

2019-04-01

请注意,这不包括当前月份。如果需要包括当前月份,可以将“ $ end”变量设置为下个月的第一天。

$current_first_day_of_the_month = date("Y-m-01");

$end = strtotime("$current_first_day_of_the_month +1 month");

$start = $month = strtotime("-12 months", $end);

希望这会有所帮助,问候。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_32659841/article/details/116169301

智能推荐

java函数式接口报错static_java 函数式接口_素寰韶的博客-程序员宅基地

java 函数式接口java 函数式接口函数式接口含义:只有一个抽象方法的接口,这个接口就是函数式接口函数式接口是Lambda表达式的适用前提格式说明:检查一个接口是否是函数式接口,可以使用一个注解@functionalInterface效果:如果不是函数式接口则编译报错函数:处理数据的逻辑,定义参数和处理参数的代码,可能能返回处理的结果单独存在的一个处理逻辑,不应该从属于热别的主体(不应该属于某...

三星GT-S7562i 刷机 完整版_weixin_34194379的博客-程序员宅基地

1. PC端安装好三星手机的驱动,可以通过如下方法实现:    1.1 已经安装三星官方的kies程序,则驱动已经完毕。如果想自行安装,请转至三星官方网站下载:http://www.samsungapps.com/about/onPc.as    1.2 从kies中提取出samsung_usb_driver_for_mobile.exe进行安装。提取方法:运行kies安装程序,待安装程序完成自...

2021年电工(初级)考试题库及电工(初级)考试试卷_weixin_47565892的博客-程序员宅基地

题库来源:安全生产模拟考试一点通公众号小程序2021年电工(初级)考试题库为正在备考电工(初级)操作证的学员准备的理论考试专题,每个月更新的电工(初级)考试试卷祝您顺利通过电工(初级)考试。1、【判断题】()钳形电流表可以在不切断电路情况下测量电流。(√)2、【判断题】()绝缘夹钳不需保存在特别的箱子里。(×)3、【判断题】()电缆头制作必须连续进行,一次完成。(√)4、【判断题】()某导体长度增加一倍,面积也增加一倍,则导体的电阻增加4倍。(×)...

41_weixin_34402408的博客-程序员宅基地

 从3月21日到现在整整是41天了,我工作了也有了41天了。其中有太多的故事应该记下来,可一天时间少,事儿多,也就没有心情和精力了。明天是5月1日,是劳动节了,我想我应该以劳动的方式去过了。 在上学期时,我本打算下学期在学校学习等正式毕业后才去找工作,可周围同学的想法是春节过后就去找工作。我也只好顺大流了。大家为找工作做准备工作,其实也做不了什么有实质性的东西,因为我们都...

MySql索引优化实践_牧佑的博客-程序员宅基地

索引的本质索引是帮助mysql搞笑获取数据的排好序的数据结构索引存储在文件里索引结构- 二叉树- 红黑树- HASH- BTREE索引底层数据结构与算法InnoDB与myISAM索引区别索引最左前缀原理...

使用Node.js完成的第一个项目的实践总结_weixin_34204722的博客-程序员宅基地

http://blog.csdn.net/yanghua_kobe/article/details/17199417项目简介 这是一个资产管理项目,主要的目的就是实现对资产的无纸化管理。通过为每个资产生成二维码,来联合移动终端完成对资产的审核等。这个项目既提供了Web端的管理界面也提供移动端(Andorid)的资产审核、派发等相关功能。我们用Node.js构建该项目的Web端以及移动端...

随便推点

java excel 多个sheet_java poi 通过excel模板导出并且生成多个sheet_Aelius Censorius的博客-程序员宅基地

@SuppressWarnings("deprecation")private static void copyRows(HSSFWorkbook workbook, HSSFSheetfromsheet, HSSFSheet newsheet, int firstrow, int lastrow){if ((firstrow == -1) || (lastrow == -1) || lastro...

Owin Middleware如何在IIS集成管道中执行_weixin_30952103的博客-程序员宅基地

Owin Middleware Components(OMCs)通过安装Install-Package Microsoft.Owin.Host.SystemWeb可以让OMCs在IIS集成管道下工作在IIS集成管道里,这个request pipeline 包含HttpModules关联到一组预定义的管道事件,例如BeginRequest, AuthenticateRequest, ...

LeetCode热题100-3.无重复字符的最长子串_万阁的博客-程序员宅基地

文章目录LeetCode热题100-3.无重复字符的最长子串题目思路解LeetCode热题100-3.无重复字符的最长子串题目无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pww

多核时代 .NET Framework 4 中的并行编程6---并行LINQ_weixin_34341117的博客-程序员宅基地

1.并行LINQ(PLINQ)并行LINQ (PLINQ) 是 LINQ 模式的并行实现。 PLINQ 查询在许多方面类似于非并行 LINQ to Objects 查询。 PLINQ 尝试充分利用系统中的所有处理器, 它利用所有处理器的方法是,将数据源分成片段,然后在多个处理器上对单独工作线程上的每个片段并行执行查询。 在许多情况下,并行执行意味着...

树形ListView_锋巅的博客-程序员宅基地

第一次接触树形ListView是一年前,当时公司做的项目是一个企业的员工管理软件,在展示员工时用到的,我花了大半天时间,才把树形ListView搞明白,完成任务后就没有然后了(当时主管还对我说要注意代码的积累,可我没在意)。今年五月份来北京找工作,找了两个月才找到工作(对这份工作还不能满意,没办法还得要吃饭),这两个月,浮躁的心也静下来了,做技术的就踏踏实实的把技术搞好,再去想其他的。废话不多说了

echarts 世界地图标点_Echarts自定义实现标点地图_Mjohfspjt的博客-程序员宅基地

发表于2021-1-16 16:30悬赏1未解决楼主请问如何修改下面的脚本能够实现Echarts自定义的标点地图(这段代码的option部分加上格式化出来的数据res能够在Echarts上能够运行出来正确标点地图,只不过是中国地图)//区域名称及值varcaptions = '';varvalues='';captions = eval(captions);values=eval(valu...