统计中需要获取今天、昨天、本月、上月的统计数据,但在时间的写法上总是很迷茫。
当前的方式可以很清晰的明确每一个时间的范围
先得到一个当前时间的时间戳
$now = time(); //当前时间
再从每天的零时到下一天的零时前一秒来获取今天的全部时间
$mor_today = strtotime(date("Y-m-d 00:00:00",$now)); //今天时间开始
$eve_today = strtotime(date("Y-m-d 23:59:59",$now)); //今天时间结束
$mor_yes = strtotime(date("Y-m-d 00:00:00",$now-86400)); //昨天时间开始
$eve_yes = strtotime(date("Y-m-d 23:59:59",$now-86400)); //昨天时间结束
当月:需要从每月的第一天到当月的最后一天
$days = date('t', strtotime($now)); //获取指定时间月份的天数
$begin_mon = strtotime(date("Y-m-01",$now)); //本月时间开始
$end_mon = strtotime(date("Y-m-".$days." 23:59:59",$now)); //本月时间结束
上月:需要获取当前月份并减1
$mon = date('m',$now)-1;
$begin_last = strtotime(date("Y-".$mon."-01",$now)); //上月时间开始
$days1 = date('t', $begin_last); //获取上月的天数
$end_last = strtotime(date("Y-".$mon."-".$days1." 23:59:59",$now));//上月时间结束
涉及函数
date();
函数格式化本地日期和时间,并返回已格式化的日期字符串。
语法
date(format,timestamp)
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前的日期和时间。
参数:
Y 4 位数字完整表示的年份 例如:1999 或 2003
m 数字表示的月份,有前导零 01 到 12
d 月份中的第几天,有前导零的 2 位数字 01 到 31
t 指定的月份有几天 28 到 31
strtotime();
函数将任何英文文本的日期或时间描述解析为 Unix 时间戳
(自 January 1 1970 00:00:00 GMT 起的秒数)。
语法
strtotime(time,now);
参数 描述
time 必需。规定日期/时间字符串。
now 可选。规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。