您当前的位置: 首页 > 网站编程 > PHP教程 > 如何使用PHP计算上一个月的今天

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

作者:不详 来源:网络 发布时间: 2014-08-18 14:38 点击:
一日,遇到一个问题,求上一个月的今天。 最开始我们使用 strtotime(-1 month) 函数求值,发现有一个问题,月长度不一样的月份的计算结果有误。 比如:2011-03-31,得到的结果是2011-03-03。我们先不追究什么问题,先看如何解决问题。 此时,想起PHP中有一个mktime函数

如何使用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计算上一个月的今天"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4