php获取上一个月的开始与结束时间遇到的问题

 改正之前:

$_lastMonthStart   = date(‘Y-m-1 00:00:00‘, strtotime("-1 month"));
$_lastMonthEnd     = date(‘Y-m-d H:i:s‘, strtotime(‘-1 sec‘, strtotime($_monthStart)));
$preMonthRange   = [$_lastMonthStart, $_lastMonthEnd];
想要的结果:上一个月的开始和结束时间这一范围。

出现的问题描述:5月31号获取到的上一个时间居然是5月1到5月31!!!正确的应该是4月1到4月30

问题原因分析:问题出现在5.31这一天减去一个月不存在4.31,所以变成了5.1导致出错。

解决方法:在上面定义一个’标准时间‘,即本月的1号。

改正之后:
$standardTime      = date(‘Y-m-1‘);
$_lastMonthStart   = date(‘Y-m-1 00:00:00‘, strtotime("-1 month", strtotime($standardTime)));
$_lastMonthEnd     = date(‘Y-m-d H:i:s‘, strtotime(‘-1 sec‘, strtotime($_monthStart)));
$preMonthRange   = [$_lastMonthStart, $_lastMonthEnd];

完美解决问题!

原文地址:https://www.cnblogs.com/liuqd001/p/9144413.html

时间: 2024-10-14 03:23:28

php获取上一个月的开始与结束时间遇到的问题的相关文章

js获取上一个月、下一个月格式为yyyy-mm-dd的日期

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

JS中在当前日期上追加一天或者获取上一个月和下一个月

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

js获取上一个月、下一个月

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

Php 获取上一个月或者下一个月时间参考

function GetMonth($sign="1"){ //得到系统的年月 $tmp_date=date("Ym"); //切割出年份 $tmp_year=substr($tmp_date,0,4); //切割出月份 $tmp_mon =substr($tmp_date,4,2); $tmp_nextmonth=mktime(0,0,0,$tmp_mon+1,1,$tmp_year); $tmp_forwardmonth=mktime(0,0,0,$tmp_mo

python中获取上一个月一号的方法

业务场景: 我们经常会跑一些月级别或者周级别的报表. 周级别的报表还比较好确定,就是七天前的直接用timedelta(days=7)来获取开始日期就可以了; 但是月级别的报表就要麻烦一些,因为timedelta这个函数没有month这个参数,那我们怎么来获取一个月前的一号呢,还要考虑到这个月有多少天,会不会跨年,之类的... 我今天想到了一个简单的办法,分享给大家 有了这个办法,就不用再去判断闰年那些很麻烦的逻辑了 如果大家发现这个算法有什么问题可以指出来,共同学习 1 from datetim

Shell获取上一个月、星期的时间范围

#!/bin/bash date_today=`date -d '1 day ago' +%Y%m%d` #最近7天 date_befor_7day=`date -d '7 day ago' +%Y%m%d` #上一个完整周(周一到周日) OFDAY="`date "+%u"`" STEPOFDAY="`expr $OFDAY + 6`" date_befor_weekday="`date -d '-'$STEPOFDAY' day'

根据当前时间获取上一个月的时间

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"

php自动获取上一个月的起始时间

$last_month = date('Y-m', strtotime('last month')); $last['first'] = $last_month . '-01 00:00:00'; $last['end'] = date(‘Y-m-d H:i:s’, strtotime("$last_month +1 month -1 day +23 hours +59 minutes +59 seconds"));

js计算当前日期上一个月和下一个月

/**         * 获取上一个月         *         * @date 格式为yyyy-mm-dd的日期,如:2014-01-25         */        function getPreMonth(date) {            var arr = date.split('-');            var year = arr[0]; //获取当前日期的年份            var month = arr[1]; //获取当前日期的月份