php获取昨天/今天/明天/上周/本月/过去N月起止时间戳
PHP获取昨天、今天、明天、上周、本月、过去几/N个月、过去半年、一年后等起始时间戳和结束时间戳的方法
首先了解两个PHP函数:
strtotime()函数:将任何英文文本的日期时间描述解析为 Unix 时间戳
strtotime(time,now)
mktime() 函数:返回一个日期的 Unix 时间戳
mktime(hour,minute,second,month,day,year,is_dst)
php获取昨天 今天 明天 上周 本月 一年后 十年后的开始时间戳和结束时间戳:
- //php获取今天日期
- date("Y-m-d");
- //php获取昨天日期
- date("Y-m-d",strtotime("-1 day"))
- //php获取明天日期
- date("Y-m-d",strtotime("+1 day"))
- //php获取一周后日期
- date("Y-m-d",strtotime("+1 week"))
- //php获取一周零两天四小时两秒后时间
- date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds"))
- //php获取下个星期四日期
- date("Y-m-d",strtotime("next Thursday"))
- //php获取上个周一日期
- date("Y-m-d",strtotime("last Monday"))
- //php获取一个月前日期
- date("Y-m-d",strtotime("last month"))
- //php获取一个月后日期
- date("Y-m-d",strtotime("+1 month"))
- //php获取十年后日期
- date("Y-m-d",strtotime("+10 year"))
- //php获取今天起止时间戳
- mktime(0,0,0,date('m'),date('d'),date('Y'));
- mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
- //php获取昨天起止时间戳
- mktime(0,0,0,date('m'),date('d')-1,date('Y'));
- mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
- //php获取上周起止时间戳
- mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
- mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
- //php获取本月起止时间戳
- mktime(0,0,0,date('m'),1,date('Y'));
- mktime(23,59,59,date('m'),date('t'),date('Y'));
- /**By:未来往事博客 https://www.fity.cn**/
php获取过去半年/N个自然月每月的起止时间戳:
- /**
- * 计算过去N月每个自然月的起止时间戳,包括当前月份
- * @param integer $max 月份数,默认为6
- * @param string $monthstr 返回值数组的第三个下标(具体月份的表示形式)
- * @return array 每个子数组形式array(月起始时间戳,月结束时间戳,月份名称)
- * @author 来源未来往事博客:https://www.fity.cn
- */
- function month_offset($max= 6,$monthstr = 'ym'){
- if ($max<=0) {
- return false;
- }
- $base = date('Y-m-01');
- $y = 1;
- $mo = array();
- $mo[0][0] = strtotime($base);
- $mo[0][1] = time();
- $mo[0][2] = date($monthstr);
- while ($y < $max) {
- $mo[$y][0] = strtotime(date('Y-m-01',strtotime($base.' -'.$y.' month')));
- $mo[$y][1] = $y == 1?$mo[0][0]:$mo[$y-1][0];
- $mo[$y][2] = date($monthstr,$mo[$y][0]);
- $y++;
- }
- return array_reverse($mo);
- }
- 默认输出结果:
- array (size=6)
- 0 =>
- array (size=3)
- 0 => int 1464710400
- 1 => int 1467302400
- 2 => string '1606' (length=4)
- 1 =>
- array (size=3)
- 0 => int 1467302400
- 1 => int 1469980800
- 2 => string '1607' (length=4)
- 2 =>
- array (size=3)
- 0 => int 1469980800
- 1 => int 1472659200
- 2 => string '1608' (length=4)
- …………
php获取两个日期之间的日期:
- /**
- * 计算过去N月每个自然月的起止时间戳,包括当前月份
- * @param string $start 开始日期,例如:2016-10-10
- * @param string $end 结束日期
- * @return string 日期
- * @author 来源未来往事博客:https://www.fity.cn
- */
- function getDates($start, $end) {
- $dt_start = strtotime($start);
- $dt_end = strtotime($end);
- do {
- echo date('Y-m-d', $dt_start).'
- ';
- } while (($dt_start += 86400) <= $dt_end);// 重复 Timestamp + 1 天(86400), 直至大于结束日期中止
- }
- getDates('2016-10-10','2016-12-09');
- 默认输出结果:
- 2016-10-10
- 2016-10-11
- 2016-10-12
- 2016-10-13
- 2016-10-14
- 2016-10-15
- …………
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
技术大牛