php取本周、本月的第一天与最后一天

发布时间:2019-08-04编辑:脚本学堂
本文介绍下,用php的时间函数取本周或本月第一天与最后一天的方法,有需要的朋友参考下。

1,取本周第一天、最后一天
 

复制代码 代码示例:
echo '本周第一天(星期日为一周开始):'.date('Y-m-d', time()-86400*date('w')).'<br/>';
echo '本周第一天(星期一为一周开始):'.date('Y-m-d', time()-86400*date('w')+(date('w')>0?86400:-6*86400)).'<br/>';
echo '本月第一天:'.date('Y-m-d', mktime(0,0,0,date('n'),1,date('Y'))).'<br/>';
echo '本月最后一天:'.date('Y-m-d', mktime(0,0,0,date('n'),date('t'),date('Y'))).'<br/>';

2,PHP DATE 取得当月的第一天和最后一天! 
echo   date('Y-m-01',time()).'----'.date('Y-m-t',time())

3,PHP时间函数 给定日期的下个月第一天 当月第一天

代码:
  function GetPurMonth($date){//获取指定日期上个月的第一天和最后一天。
  

复制代码 代码示例:
    $time=strtotime($date);
      $firstday=date('Y-m-01',strtotime(date('Y',$time).'-'.(date('m',$time)-1).'-01'));
      $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
      return array($firstday,$lastday);
  }

问题出现了。
比如获取第一天,上面这种使用(date('m',$time)-1);万一要是获取给定日期的上上个月呢。
难道要直接减2?那万一要是给定的日期是1月份呢。难道最终会成为 date('Y-m-01', strtotime('2012--1-01')) ?????这明显是个错误 的时间格式。
所以这种函数不适合扩展使用。

查询PHP函数库,找到一个函数  mktime();

mktime()
定义和用法
mktime() 函数返回一个日期的 Unix 时间戳。
参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
语法
mktime(hour,minute,second,month,day,year,is_dst)

例子:
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入;
这是什么意思。自动校正越界输入。对头。我们就是要这个功能。下面看下实例
 

复制代码 代码示例:
echo date('Y-m-d', strtotime('2012--2-1'));
echo '
';
echo date('Y-m-d', mktime(0,0,0,-2,1,2012));

要输出2012年1月1号前2个月的日期。
即 2011年10月1号。
1970-01-01
2011-10-01
结论:
第一个函数出错了。显示了时间戳为0的时间。
而第二个函数让我们得到了想要的时间。