Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计算一周中两天之间的日期_Php - Fatal编程技术网

Php 计算一周中两天之间的日期

Php 计算一周中两天之间的日期,php,Php,我需要一个算法来计算一周中两天之间的日期! 比如我有 开始日期:2012年4月23日和结束日期:2012年4月27日 现在,我希望接收具有以下结构的阵列: $arr = array( '23-04-2012', '24-04-2012', '25-04-2012', '26-04-2012', '27-04-2012', '28-04-2012' ); 谢谢 这对你有帮助 $startdate=explode("-","23-04-2012"); $enddate=

我需要一个算法来计算一周中两天之间的日期! 比如我有

开始日期:2012年4月23日和结束日期:2012年4月27日

现在,我希望接收具有以下结构的阵列:

$arr = array(
  '23-04-2012',
  '24-04-2012',
  '25-04-2012',
  '26-04-2012', 
  '27-04-2012', 
  '28-04-2012'
);
谢谢

这对你有帮助

$startdate=explode("-","23-04-2012");
$enddate=explode("-","27-04-2012");
$i;
$arr=array();
for($i=$startdate[0];$i<=$endate[0];$i++)
{
     $dd=$i.'-'.$startdate[1].'-'.$startdate[2];
     array_push($arr,$dd);
}
print_r($arr);
$startdate=爆炸(“-”,“23-04-2012”);
$enddate=爆炸(“-”,“27-04-2012”);
$i;
$arr=array();

对于($i=$startdate[0];$i可以使用DateTime::Diff函数(文档)

  • 将两个日期传递到函数中
  • 获取返回值作为天数
  • 向其中添加一个(以便包括开始日期和结束日期)
  • 为(int i=0;i
    $start='23-04-2012';
    $end='27-04-2012';
    $startTs=strottime($start 00:00:00);
    $endTs=strotime($end 00:00:00);
    $days=array();
    $day=$startTs;
    $i=0;
    
    虽然($day看起来很简单。你所需要做的就是检查两个日期之间是否有一个月的过渡,另一个情况比这个更简单,即一个简单的增量循环,月份保持不变。我会使用
    strotime
    date
    的组合,或者
    DateTime
    。我会使用
    date
    strotime
    mktime
    和一个当天递增的变量的组合。@deceze虽然我更喜欢mktime,但你可以使用类似于
    strotime(“blah+{$x}天”)的东西;
    但是,我不太确定这会对夏令时产生什么影响(实际上我也不确定mktime是否100%安全,但它肯定更好)。@Corbin是的,我不太相信Strotime,但这可能纯粹是主观的。
    mktime
    效果很好,如我下面的回答所示……)如果这跨越了一个月的界限?日期数学通常比字符串操作更好。我刚给了OP一个示例代码。现在OP可以用它进行实验并改进。当然,这取决于你。我个人不惜一切代价避免基于字符串操作的日期数学,但有些人一直在使用它。我很高兴假设你引导他走错了路,但是假设日期没有跨越大于或等于一个月的时间段边界,代码是有效的。@PsyCoder:如果你修改它以适应不断变化的月份、闰年,那么你的方法是正确的。但这会使问题变得过于复杂。你可以直接使用它,这将减轻他的负担他摆脱了所有的负担。@Răzvan Panda:谢谢你添加了参考链接。
    $start = '23-04-2012';
    $end   = '27-04-2012';
    
    $startTs = strtotime("$start 00:00:00");
    $endTs   = strtotime("$end 00:00:00");
    
    $days = array();
    $day  = $startTs;
    
    $i = 0;
    
    while ($day <= $endTs) {
        $days[] = date('d-m-Y', $day);
        $i++;
        $day = mktime(0, 0, 0, date('n', $startTs), date('j', $startTs) + $i, date('Y', $startTs));
    }
    
    var_dump($days);