如何查找两个指定日期之间的日期?

uda*_*aya 10 php

如果我在两个文本框中有两个日期20-4-2010和22-4-2010,我希望日期类似于20,21,22.我如何得到它?

Gor*_*don 14

我很确定之前已经回答了数千万次,但无论如何:

$start = strtotime('20-04-2010 10:00');
$end   = strtotime('22-04-2010 10:00');
for($current = $start; $current <= $end; $current += 86400) {
    echo date('d-m-Y', $current);
}
Run Code Online (Sandbox Code Playgroud)

10:00部分是为了防止代码因夏令时而跳过或重复一天.

通过给出天数:

for($i = 0; $i <= 2; $i++) {
    echo date('d-m-Y', strtotime("20-04-2010 +$i days"));
}
Run Code Online (Sandbox Code Playgroud)

使用PHP5.3

$period = new DatePeriod(
    new DateTime('20-04-2010'),
    DateInterval::createFromDateString('+1 day'),
    new DateTime('23-04-2010') // or pass in just the no of days: 2
);

foreach ( $period as $dt ) {
  echo $dt->format( 'd-m-Y' );
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*igh 7

你可以用mktime().

mktime()对于进行日期算术和验证很有用,因为它会自动计算超出范围输入的正确值.

如果您增加日期编号,则会获得有效的日期,即使您已超过月末:

<?php
$day= 25;
$dateEnd = mktime(0,0,0,5,3,2010);
do {
    $dateCur = mktime(0,0,0,4,$day,2010);
    $day++;
    print date( 'd-m-y', $dateCur) .'<br>';
} while ($dateCur < $dateEnd);
Run Code Online (Sandbox Code Playgroud)

输出:

25-04-10
26-04-10
27-04-10
28-04-10
29-04-10
30-04-10
01-05-10
02-05-10
03-05-10
Run Code Online (Sandbox Code Playgroud)