• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-26) 18次浏览 已收录 0个评论

一日,遇到一个问题,求上一个月的今天。 最开始我们使用 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),<BR> date("s", $time), date("n", $time) - 1, date("j", $time), date("Y", $time)));<BR>


当执行时,发现结果和strtotime的结果是一样的。
还是基于这个函数,既然无法直接操作月,那么我们从天入手,得到上一个月,然后再使用date拼接数据。如下代码:

$time = strtotime("2011-03-31");<BR>/**<BR> * 计算上一个月的今天<BR> * @param type $time<BR> * @return type<BR> */<BR>function last_month_today($time) {<BR>     $last_month_time = mktime(date("G", $time), date("i", $time),<BR>                date("s", $time), date("n", $time), - 1, date("Y", $time));<BR>     return date(date("Y-m", $last_month_time) . "-d H:i:s", $time);<BR>}<BR>echo last_month_today($time);<BR>


但是此时又有了另一个问题,不存在2011-02-31这样的日期,怎么办?现在的需求是对于这样的日期显示当月最后一天。 如下代码:

 $time = strtotime("2011-03-31");<BR>/**<BR> * 计算上一个月的今天,如果上个月没有今天,则返回上一个月的最后一天<BR> * @param type $time<BR> * @return type<BR> */<BR>function last_month_today($time){<BR>    $last_month_time = mktime(date("G", $time), date("i", $time),<BR>                date("s", $time), date("n", $time), 0, date("Y", $time));<BR>    $last_<em style="color:transparent">本文来源[email protected]搞@^&代*@码)网9</em><strong>搞代gaodaima码</strong>month_t =  date("t", $last_month_time);<BR>    if ($last_month_t < date("j", $time)) {<BR>        return date("Y-m-t H:i:s", $last_month_time);<BR>    }<BR>    return date(date("Y-m", $last_month_time) . "-d", $time);<BR>}<BR>echo last_month_today($time);<BR>


这里需要注意一点: date(”Y-m”, $last_month_time) . “-d”这段代码。在写代码的过程中如果写成了 “Y-” . date(”m”, $last_month_time) . “-d” 则在跨年的时间上有问题。 这点还是在写这篇文章时发现的。
除了这种方法,还可以先算出年月日再拼接字符串,这里就是纯粹的字符串操作了。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用PHP计算上一个月的今天_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址