在每次迭代中添加一个月的时间戳

时间:2011-07-01 15:58:49

标签: php

这是我的PHP代码,它生成一个月份名称+年份的选择框。我有两个时间戳,我在循环中使用它来启动时间戳和结束时间戳。

现在问题是例如我的开始时间戳代表01.07.2011 并且在循环中我只添加了30天的时间戳,然后我选择框7月将显示两次。 如果我加上31天,那么可能会是一个月。

是否有任何可用的功能可以为每次迭代添加一个月?

<select name="checkinMonth" class="selectform" id="checkinMonth" >
<?php
   for($month = $checkin_timestamp; $month <= $checkout_timestamp; $month += 30*60*60*24) {
      $checkin_month = getdate($month);
      $option_text =  strftime("%B %Y",$month);
      $option_value =  strftime("%Y%m", $month);
      $selected = ($checkin_selected == $option_value ? "selected='selected'" : "");

         echo "<option value='{$option_value}' {$selected}>{$option_text}</option>";
    }
?>
</select> 

2 个答案:

答案 0 :(得分:27)

您正在寻找类似的东西:

strtotime("+1 month", $myTimestamp); 

http://us2.php.net/strtotime

答案 1 :(得分:4)

如果你想要更冗长的东西,试试这个:

$tmp_year = date("Y", $month);
$tmp_month = date("m", $month);
$tmp_day = date("d", $month);
$tmp_hour = date("H", $month);
$tmp_min = date("m", $month);
$tmp_sec = date("s", $month);

$month = mktime($tmp_hour, $tmp_minute, $tmp_second, $tmp_month + 1, $tmp_day, $tmp_year);

我想你必须把它放在它自己的函数中才能使它适合for-clause:P