我想得到两个日期之间的所有日期, 
例如:输入两个日期,把这两个日期之间的所有日期取出来   
  
如果是:2005-02-01至2005-02-05(同为一个月)   
  
则为:2005-02-01,2005-02-02,2005-02-03,2005-02-04,2005-02-05   
  如果是:2005-01-29至2005-02-02(不同的月,有31号的月份)   
则为:2005-01-29,2005-01-30,2005-01-31,2005-02-01,2005-02-02 
PHP或JS写的简单一点的谢谢

解决方案 »

  1.   

    <pre>
    <?php
    function prDates($start,$end){
    $dt_start = strtotime($start);
    $dt_end = strtotime($end);
    while ($dt_start<=$dt_end){
    echo date('Y-m-d',$dt_start)."\n";
    $dt_start = strtotime('+1 day',$dt_start);
    }
    }
    prDates('2005-02-01','2005-02-05');
    echo "----------\n";
    prDates('2005-01-29','2005-02-02');
    ?>
    </pre>
      

  2.   

    我不想写代码了,但我可以给你说思路:  首先将你的两个首尾时间用gmmktime()函数或strtotime()函数将时间格式转换为UNIX时间戳,然后写一个循环,没循环一次,就让它加一天时间的时间戳(24*60*60),再将加了时间的时间戳用相关函数再转换为时间格式就行了。   当然,循环次数就是两个UNIX时间戳之差再除以(24*60*60),就是间隔了多少天。   希望上面的思路对你有所帮助,具体代码还是自己多操作吧
      

  3.   

    function prDates($start, $end) { 
    $dt_start = strtotime($start); 
    $dt_end   = strtotime($end); 
    do { 
    date('Y-m-d', $dt_start).PHP_EOL;
    } while (($dt_start += 86400) <= $dt_end);
    }改成这样效率高一倍
      

  4.   

    function prDates($start, $end) { 
    //将ISO Date 转成 Timestamp
        $dt_start = strtotime($start);
        $dt_end   = strtotime($end);
        do { 
         //将 Timestamp 转成 ISO Date 输出
            echo date('Y-m-d', $dt_start).PHP_EOL;
        } while (($dt_start += 86400) <= $dt_end); // 重复 Timestamp + 1 天(86400), 直至大于结束日期中止
    }