当我想从日期间隔日复一日地显示时,我正面临一个问题。
我的意思是我有一个简单的形式:
<form method="post" action="">
From Date1: <input type="text" name="date1" value="<!--10 days ago date (2013-09-14)-->"/>
<br>
To Date2: <input type="text" name="date2" value="<!--today's date (2013-09-24)-->"/>
<input type="submit" value="Change interval"/>
</form>
从这个表格我得到两个约会,我想展示它们之间的所有日子,如下:
| 2013-09-14
| 2013-09-15
| 2013-09-16
| 2013-09-17
| .
| .
| 2013-09-24
如果可以将所有这些日期保存在数组或变量中。
希望你能帮助我。谢谢你。答案 0 :(得分:3)
$start = new DateTime('2013-09-01');
$end = new DateTime('2013-09-30');
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt)
{
echo $dt->format("Y-m-d") . PHP_EOL;
}
<强> See it in action 强>
特别针对您的用例:
$dates = array();
$start = new DateTime($_POST['date1']);
$end = new DateTime($_POST['date2']);
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt)
{
$dates[] = $dt->format("Y-m-d");
}
答案 1 :(得分:1)
试试这个,想想我多年前从php.net得到它,抱歉没有更好的参考链接......
function dates_array($start, $end) {
$range = array();
if (is_string($start) === true) $start = strtotime($start);
if (is_string($end) === true ) $end = strtotime($end);
do {
$range[] = date('Y-m-d', $start);
$start = strtotime("+ 1 day", $start);
}
while($start <= $end);
return $range;
}