加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

这是一个PHP date()错误,还是我的代码有问题?

发布时间:2020-12-13 21:58:02 所属栏目:PHP教程 来源:网络整理
导读:我有两个箭头图像,一个向后递增月份,一个通过href向前递增. if (ISSET($_GET["month"])){ $month_index = $_GET["month"];}else{ $month_index = 0;}$month = strtotime("+".$month_index." month");?...a href=?php $month_index = $month_index - 1; echo
我有两个箭头图像,一个向后递增月份,一个通过href向前递增.

if (ISSET($_GET["month"])){
    $month_index = $_GET["month"];
}
else{
    $month_index = 0;
}
$month = strtotime("+".$month_index." month");
?>
...

<a href=<?php $month_index = $month_index - 1; echo "?month=".$month_index; ?>><img src="arrow_left.gif" ></a>
<div class="title">Logbook Calendar for <?php echo date("F Y",$month); ?> </div>
<a href=<?php $month_index = $month_index + 2; echo "?month=".$month_index; ?>><img src="arrow_right.gif"></a>

问题是当2015年2月出现时,date()返回“March 2015” – 所以$month_index = 6和$month_index = 7都是March.

我在http://writecodeonline.com/php/上运行了这段代码:

date_default_timezone_set("America/New_York");
$month_index = 6;
$month_index = $month_index - 1;
$month_index = $month_index + 2; 
echo $month_index;
$month = strtotime("+".$month_index." month");
echo " " . $month;
echo " " . date("F Y",$month);

将$month_index = 6切换为$month_index = 7仍会导致3月回应.这里有一些错误,2015年2月是……已经消失了吗?

更新:谢谢大家.我自己也从来没有找到过这个.我这样解决了问题:

$month = strtotime(date("M-01-Y") . "+".$month_index." month");

解决方法

这是日期的工作方式,以及您遇到2月和29个月或更晚的时间.如果您在当年2月的最后一天(即今年2月28日)之后的某个日期添加一个月,您将跳过2月份.每当迭代几个月时,您应始终使用月初,以避免二月被跳过.因此,如果您从1月30日开始并添加“一个月”,因为没有2月30日,您将跳到3月.

以下是如何在不知道二月份(或关心)多少天的情况下迭代数月.我从现在开始选择了一年的任意结束日期.

$start    = new DateTimeImmutable('@'.mktime(0,$month_index,1,2014));
$end      = $start->modify('+1 year')
$interval = new DateInterval('P1M');
$period   = new DatePeriod($start,$interval,$end);

foreach ($period as $dt) {
    echo $dt->format('F Y');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读