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

2015-01-24信息快讯网

本篇文章是对用PHP计算上一个月的今天的实例进行了详细的分析介绍,需要的朋友参考下

一日,遇到一个问题,求上一个月的今天。 最开始我们使用 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 < date("j", $time)) {
        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” 则在跨年的时间上有问题。 这点还是在写这篇文章时发现的。
除了这种方法,还可以先算出年月日再拼接字符串,这里就是纯粹的字符串操作了。
PHP中获取时间的下一周下个月的方法
PHP下获取上个月、下个月、本月的日期(strtotime,date)
web server使用php生成web页面的三种方法总结
使用淘宝IP库获取用户ip地理位置
PHP 使用pcntl和libevent 实现Timer功能
一个简单且很好用的php分页类
php模拟ping命令(php exec函数的使用方法)
PHP error_log()将错误信息写入一个文件(定义和用法)
实用的简单PHP分页集合包括使用方法
PHP字符串长度计算 - strlen()函数使用介绍
PHP 验证码不显示只有一个小红叉的解决方法
PHP实现今天是星期几的几种写法
一个PHP的远程图片抓取函数分享
php实现的一个很好用HTML解析器类可用于采集数据
PHP计算2点经纬度之间的距离代码
计算php页面运行时间的函数介绍
使用php 获取时间今天明天昨天时间戳的详解
解析PHP计算页面执行时间的实现代码
使用PHP计算两个路径的相对路径
php 深入理解strtotime函数的使用详解
解析php二分法查找数组是否包含某一元素
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
php笔记之:数据类型与常量的使用分析
php Hex RGB颜色值互换的使用
深入PHP数据缓存的使用说明
PHP 自定义错误处理函数的使用详解
php中使用$_REQUEST需要注意的一个问题
关于PHP的相似度计算函数:levenshtein的使用介绍
克隆一个新项目的快捷方式
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
php中将字符串转为HTML的实体引用的一个类
php中使用临时表查询数据的一个例子
PHP中计算字符串相似度的函数代码
php中计算程序运行时间的类代码
php计算十二星座的函数代码
php中计算未知长度的字符串哪个字符出现的次数最多的代码
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
©2014-2024 dbsqp.com