如何使用PHP计算上一个月的今天
2023-06-13 09:14:59 时间
一日,遇到一个问题,求上一个月的今天。最开始我们使用strtotime(”-1month”)函数求值,发现有一个问题,月长度不一样的月份的计算结果有误。比如:2011-03-31,得到的结果是2011-03-03。我们先不追究什么问题,先看如何解决问题。此时,想起PHP中有一个mktime函数,于是自己写了如下代码:
复制代码代码如下:
echodate("Y-m-dH: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");
/**
*计算上一个月的今天
*@paramtype$time
*@returntype
*/
functionlast_month_today($time){
$last_month_time=mktime(date("G",$time),date("i",$time),
date("s",$time),date("n",$time),-1,date("Y",$time));
returndate(date("Y-m",$last_month_time)."-dH:i:s",$time);
}
echolast_month_today($time);
但是此时又有了另一个问题,不存在2011-02-31这样的日期,怎么办?现在的需求是对于这样的日期显示当月最后一天。如下代码:
$time=strtotime("2011-03-31");
/**
*计算上一个月的今天,如果上个月没有今天,则返回上一个月的最后一天
*@paramtype$time
*@returntype
*/
functionlast_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)){
returndate("Y-m-tH:i:s",$last_month_time);
}
returndate(date("Y-m",$last_month_time)."-d",$time);
}
echolast_month_today($time);
这里需要注意一点:date(”Y-m”,$last_month_time).“-d”这段代码。在写代码的过程中如果写成了“Y-”.date(”m”,$last_month_time).“-d”则在跨年的时间上有问题。这点还是在写这篇文章时发现的。
除了这种方法,还可以先算出年月日再拼接字符串,这里就是纯粹的字符串操作了。
相关文章
- PHP开启MySQL扩展的必要性(php开启mysql扩展)
- Linux平台上运行PHP脚本的快乐之旅(linux运行php)
- 数据快速学习:使用 PHP 读取 MySQL 数据(php读取mysql)
- 命令在PHP中执行Linux命令的方法(php执行linux)
- PHP使用Redis实现高性能缓存(php-redis)
- 查询使用PHP运行MySQL查询的步骤(php运行mysql)
- PHP不支持MySQL:危机深重的问题(php不支持mysql)
- 使用PHP操作Redis:简单灵活的方法(php如何使用redis)
- 使用PHP操作Redis实例:简单高效的数据存储方案(php操作redis实例)
- PHP中使用Redis简单取值(redis取值php)
- PHP访问MSSQL数据库的实现方法(php 读取 mssql)
- 简便快捷:在PHP服务器上使用MSSQL(php服务器 mssql)
- PHP如何支持使用MS SQL 进行数据库操作(php怎么还用mssql)
- 基于 PHP 和 MSSQL 的连接类开发实战(php mssql连接类)
- 使用PHP连接MSSQL数据库的查询语句(php mssql 语句)
- 使用PHP操作MSSQL -命令行之路(php mssql 命令)
- 使用Linux发布PHP网站:让你的站点稳定高效(linux发布php网站)
- 更新极速改进:从PHP和MySQL版本更新中获益(php mysql版本)
- 如何在PHP中使用MySQL数据库(mysql中php)
- 抢到手软秒杀PHP使用Redis进行流量管理(秒杀php用redis)
- 为PHP引入Redis提高数据处理效率(为什么php用redis)
- 原生PHP灵活使用Redis编写高效代码(原生php使用redis)
- PHP通用分页类page.php[仿google分页]
- php教程插件机制在PHP中实现方案
- PHP内置的Math函数效率测试
- 图解找出PHP配置文件php.ini的路径的方法