php 计算上个月,如何使用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计算上一个月的今天相关推荐
- 【转】使用PHP计算上一个月的今天
转自:http://www.phppan.com/2011/06/php-last-month-today/ 一日,遇到一个问题,求上一个月的今天. 最开始我们使用 strtotime("- ...
- 简单快捷计算本月第一天星期几、本月有多少天、上一个月的最后一天是几号
今天偶然在vue2/nodejs视频中看到一个计算"本月第一天星期几.本月有多少天.上一个月的最后一天是几号" 最简便最快捷的方法. 如果自己写,就很容易要判断闰年问题,那就非常复 ...
- 查询一个表中一个字段相同的数据_最实用MySQL 查询当天、本周,本月、上一个月的数据...
MySQL 查询当天.本周,本月.上一个月的数据 mysql查询当天的所有信息: SELECT * FROM 表名 WHERE year(时间字段名)=year(now()) and month(时间 ...
- 根据指定日期获取上一个月
根据指定日期获取上一个月 看过不少类似文章,根据一个日期,要取得相应的上一个月的值,则利用Calendar的api:get(Calendar.MONTH) - 1)来算. 思路是对的,但这个api有坑 ...
- 获取当前日期的上一个月和后三个月。
import datetime from dateutil.relativedelta import relativedelta #获取当前日期的上一个月和后一个月 print(datetime.da ...
- Calendar类获取当前时间上一个月,下一个月,当月的最后一天等的处理方法
Calendar cal = Calendar.getInstance();//获取一个Calendar对象 cal.setTime(new Date() ); cal.add(Calendar.MO ...
- Java获取当前时间的上一个月和下一个月,第一天和最后一天,任意时间的第一天和最后一天,任意时间上一个月和下一个月
/*** 获取当前时间* * @param args*/public static String getNowTime() {Calendar cal = Calendar.getInstance() ...
- Java 获取上一个月的月份
因最近在写代码的时候遇到了获取上个月月份的问题YYYYMM这个格式,根据给的工具类,获取出来的值是有问题的,所以记录以下. 问题方法 /*** 获取上个月的月份* 该方法有问题 三月份的29 30 3 ...
- js 获取当前日期的上一个月
// 获取当前日期的上一个月 export function getlastMonth() {let now = new Date();// 当前月的日期let nowDate = now.getDa ...
最新文章
- 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏
- Python——文件操作详解
- JVM基础系列第14讲:JVM参数之GC日志配置
- 微软(MS Dynamics SL)Solomon 承包商用户2006年度会议!
- sql server新增列_SQL Server 2016安装中的新增功能?
- R语言之随机数与抽样模拟篇
- 三菱Q系列PLC大型程序Q01U伺服12轴
- 大学群管机器人的建设畅想
- Winrar去广告图文教程
- 《巴菲特致股东的信》十年期固定行使价格期权对公司的侵蚀-计算过程演示
- Allegro PCB多层板中负片热风焊盘的制作以及flash的添加
- 关于魔兽的电脑优化配置方法
- igraph包安装教程
- [UOJ311]积劳成疾
- 简单实现mui-底部选项卡
- 埋点 神策小程序_神策埋点思路
- linux安装软件源有问题,opensuse软件安装源问题
- Leetcode算法Java全解答--19. 删除链表的倒数第N个节点
- axure交互页面设计【学习篇01】
- HashMap集合常见方法
热门文章
- springboot 控制台输出错误信息_SpringBoot 三招组合拳,手把手教你打出优雅的后端接口...
- java 实现根据ip重定向_从0到1用java再造tcpip协议栈:代码实现ping应用功能1
- 为什么都建议学java而不是python-为什么java比python复杂,还是有很多人选择学习java?...
- python就业方向-目前Python这么火,Python有哪些就业方向?
- python编程是干嘛的-Python编程一般可以用来做什么
- python画柱状图-Python Excel 绘制柱形图
- python可以做什么工作-python都能干什么用
- 传祺 GS4 和博越 PRO 不知道选谁?体验后的最真实的评价
- 语音识别看似神通广大 但它真的听得懂方言么
- 语音识别kaldi该如何学习?