您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何使用PHP计算上一个月的今天_PHP教程

2025/11/3 4:33:06发布21次查看
一日,遇到一个问题,求上一个月的今天。 最开始我们使用 strtotime(”-1 month”) 函数求值,发现有一个问题,月长度不一样的月份的计算结果有误。 比如:2011-03-31,得到的结果是2011-03-03。我们先不追究什么问题,先看如何解决问题。 此时,想起php中有一个mktime函数,于是自己写了如下代码:
复制代码 代码如下:
echo date(y-m-d h:i:s, mktime(date(g, $time), date(i, $time),
 date(s, $time), date(n, $time) - 1, date(j, $time), date(y, $time)));
当执行时,发现结果和strtotime的结果是一样的。
还是基于这个函数,既然无法直接操作月,那么我们从天入手,得到上一个月,然后再使用date拼接数据。如下代码:
复制代码 代码如下:
$time = strtotime(2011-03-31);
/**
 * 计算上一个月的今天
 * @param type $time
 * @return type
 */
function last_month_today($time) {
     $last_month_time = mktime(date(g, $time), date(i, $time),
                date(s, $time), date(n, $time), - 1, date(y, $time));
     return date(date(y-m, $last_month_time) . -d h:i:s, $time);
}
echo last_month_today($time);
但是此时又有了另一个问题,不存在2011-02-31这样的日期,怎么办?现在的需求是对于这样的日期显示当月最后一天。 如下代码:
复制代码 代码如下:
$time = strtotime(2011-03-31);
/**
 * 计算上一个月的今天,如果上个月没有今天,则返回上一个月的最后一天
 * @param type $time
 * @return type
 */
function last_month_today($time){
    $last_month_time = mktime(date(g, $time), date(i, $time),
                date(s, $time), date(n, $time), 0, date(y, $time));
    $last_month_t =  date(t, $last_month_time);
    if ($last_month_t         return date(y-m-t h:i:s, $last_month_time);
    }
    return date(date(y-m, $last_month_time) . -d, $time);
}
echo last_month_today($time);
这里需要注意一点: date(”y-m”, $last_month_time) . “-d”这段代码。在写代码的过程中如果写成了 “y-” . date(”m”, $last_month_time) . “-d” 则在跨年的时间上有问题。 这点还是在写这篇文章时发现的。
除了这种方法,还可以先算出年月日再拼接字符串,这里就是纯粹的字符串操作了。
http://www.bkjia.com/phpjc/327118.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/327118.htmltecharticle一日,遇到一个问题,求上一个月的今天。 最开始我们使用 strtotime(”-1 month”) 函数求值,发现有一个问题,月长度不一样的月份的计算结...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product