在给定初始日期和数量的情况下,使用PHP创建连续的每月日期列表

在给定初始日期和数量的情况下,使用PHP创建连续的每月日期列表,php,list,date,datetime,sequential,Php,List,Date,Datetime,Sequential,我正在开发一个小型支付系统,必须根据初始日期和支付数量生成一个支付天数(每月)列表。例如: 鉴于: 开始日期:2015/06/22 数量:6 我应该从初始日期(22)开始计算日期,并生成一个包含6个连续每月日期的列表: 2015/06/22(如果应包括初始日期,且大于今天) 2015/07/22 2015/08/24 2015/09/22 2015/10/22 2015/11/23 如您所见,生成的日期不应该是周末(sat/dom),如果可能的话,也不应该是节假日 是否有任何功能可以帮助我实

我正在开发一个小型支付系统,必须根据初始日期和支付数量生成一个支付天数(每月)列表。例如:

鉴于:

开始日期:2015/06/22
数量:6

我应该从初始日期(22)开始计算日期,并生成一个包含6个连续每月日期的列表:

  • 2015/06/22(如果应包括初始日期,且大于今天)
  • 2015/07/22
  • 2015/08/24
  • 2015/09/22
  • 2015/10/22
  • 2015/11/23
如您所见,生成的日期不应该是周末(sat/dom),如果可能的话,也不应该是节假日


是否有任何功能可以帮助我实现这一点?TIA

我想这可能会满足您的需求,包括假期:


将回响

2015-08-25
2015-09-25
2015-10-26 // Because of weekend
2015-11-25
2015-12-28 // Because of Christmas and weekend
开工日期为2015/10/31,产出将为:

2015-11-02 // Because of weekend
2015-12-01 // Because the 31st of Nov is the 1st of Dec
2015-12-31
2016-02-01 // Because the weekend
2016-03-02 // Because the 31st of Feb is the 2st of Mars (as 2016 is leep year)
作为一个好的额外提示,根据你想如何解决1月31日的问题,如果你想在每个月的最后一个月,你可以使用以下方法:

$first_of_the_month = strtotime(date("Y-m-1", $startday));
$next_month = strtotime("+ 1 month", $first_of_the_month);
$last_of_the_month = date("Y-m-t", $next_month);
echo($last_of_the_month); // 2015-09-30

如果startday是2015/01/31,下个月的日期应该是什么?@GlavićI将验证startday始终大于今天,但如果可以输入日期,2015/01/31是星期六,因此也不可能。如果可以以任何方式输入,列表应该是:2015/01/31、2015/02/27、2015/03/30、2015/04/30、2015/05/29等等(检查下一个日期不在sat/dom日)代码工作正常,但您必须从while中删除if子句,否则它不会检查周末。谢谢@Krycke