我正在尝试用时间填充选择列表。
我想创建选择列表,使其从开始日期开始,然后在六个月后结束。
我现在已经为循环创建了这个但它不起作用: $ dateSelectList =''; $ startDate = $ c-> getStartDate(92);
$endDate = intval( strtotime('+6 month', $startdate) );
$i = 1;
$tempDate = 0;
for($date = $startdate; $date <= $endDate ; $date = strtotime('+1 day', $date))
{
$dateSelectList .= '<option id="select'.$i.'" value="'.$date.'">'.$date.'</option>';
$i++;
}
$dateSelectList .= '</select>';
我认为这是for循环中的最后一个字段,但我不知道如何绕过它。
我已将其更改为$date = strtotime('+1 day', $date)
,现在可以使用了。
非常感谢!
答案 0 :(得分:1)
在每次迭代中,您将日期重置为开始日期加一天。即,您只是在每次迭代中使用相同的日期:
for($date = $startdate; $date <= $endDate ; $date = strtotime('+1 day', $startdate))
更改你的for循环,以便它继续添加到$ date:
for($date = $startdate; $date <= $endDate ; $date = strtotime('+1 day', $date))
答案 1 :(得分:1)
有很多解决方案。其中一个可能是:
$startdate = time(); // today;
$enddate = strtotime('+6 months', $startdate);
while ($startdate <= $enddate) {
echo date('Y-m-d', $startdate) . "<br/>";
$startdate = strtotime('+1 day', $startdate);
}
2012-03-26
2012-03-27
2012-03-28
2012-03-29
2012-03-30
2012-03-31
2012-04-01
...
2012-09-24
2012-09-25
2012-09-26
现在,根据需要修改代码并创建选择器。
将第一行更改为
$year = 2012;
$month = 3;
$day = 26;
$startdate = strtotime("$year-$month-$day 00:00:00 UTC");
并创建自定义 $ startdate 。
$year = 2012;
$month = 2;
$day = 3;
$startdate = strtotime("$year-$month-$day 00:00:00 UTC");
$enddate = strtotime('+6 months', $startdate);
$doc = "<select>"; $i=1;
while ($startdate <= $enddate) {
$dt = date('Y-m-d', $startdate);
$doc .= "<option id=\"select$i\" value=\"$dt\">$dt</option>";
$startdate = strtotime('+1 day', $startdate);
$i++;
}
$doc .= "</select>";
echo $doc;
更优雅的解决方案是将其全部投入到这样的功能中
function createSelector($day, $month, $year) {
$startdate = strtotime("$year-$month-$day 00:00:00 UTC");
$enddate = strtotime('+6 months', $startdate);
$doc = "<select>"; $i=1;
while ($startdate <= $enddate) {
$dt = date('Y-m-d', $startdate);
$doc .= "<option id=\"select$i\" value=\"$dt\">$dt</option>";
$startdate = strtotime('+1 day', $startdate);
$i++;
}
$doc .= "</select>";
return $doc;
}
并以这种方式称呼
$selectorCode = createSelector(26, 3, 2012);
echo $selectorCode;
干杯!
答案 2 :(得分:0)
问题确实在于这段代码:$date = strtotime('+1 day', $startdate)
...
$startdate
永远不会被更改,因此,$date
永远不会被更改。您需要更像$date = strtotime('+1 day', $date)
的内容才能使循环正常工作。