php关于时间的处理

1.获取上个月第一天及最后一天.
   echo date('Y-m-01', strtotime('-1 month'));
   echo "<br/>";
   echo date('Y-m-t', strtotime('-1 month'));
   echo "<br/>";

   上面的方法有些问题,根据bg5hfc回复做下修改

 上个月第一天:
 echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month'));// 计算出本月第一天再减一个月

 上个月最后一天:
 echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day')); // 计算出本月第一天再减一天


2.获取当月第一天及最后一天.
   $BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
   echo $BeginDate;
   echo "<br/>";
   echo date('Y-m-d', strtotime("$BeginDate +1 month -1 day"));
   echo "<br/>";


3.获取当天年份、月份、日及天数.
   echo " 本月共有:".date("t")."天";
   echo " 当前年份".date('Y');
   echo " 当前月份".date('m');
   echo " 当前几号".date('d');
   echo "<br/>";


4.使用函数及数组来获取当月第一天及最后一天,比较实用
   function getthemonth($date)
   {
   $firstday = date('Y-m-01', strtotime($date));
   $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
   return array($firstday,$lastday);
   }
   $today = date("Y-m-d");
   $day=getthemonth($today);
   echo "当月的第一天: ".$day[0]." 当月的最后一天: ".$day[1];
   echo "<br/>";

获取本月日期:


function   getMonth( $date ){
   $firstday   date ( "Y-m-01" , strtotime ( $date ));
   $lastday   date ( "Y-m-d" , strtotime ( "$firstday +1 month -1 day" ));
   return   array ( $firstday , $lastday );
}

  $firstday是月份的第一天,假如$date是2018-2这样的话,$firstday就会是2018-02-01,然后根据$firstday加一个月就是2018-03-01,再减一天就是2018-02-28,用date()和strtotime()真是太方便了。

  获取上月日期:


function   getlastMonthDays( $date ){
   $timestamp = strtotime ( $date );
   $firstday = date ( 'Y-m-01' , strtotime ( date ( 'Y' , $timestamp ). '-' .( date ( 'm' , $timestamp )-1). '-01' ));
   $lastday = date ( 'Y-m-d' , strtotime ( "$firstday +1 month -1 day" ));
   return   array ( $firstday , $lastday );
}

  上月日期需要先获取一个时间戳,然后在月份上-1就OK了,超智能的date()会把2018-0-1这种东西转换成2017-12-01,太爽了。

  获取下月日期:


function   getNextMonthDays( $date ){
   $timestamp = strtotime ( $date );
   $arr = getdate ( $timestamp );
   if ( $arr [ 'mon' ] == 12){
     $year = $arr [ 'year' ] +1;
     $month = $arr [ 'mon' ] -11;
     $firstday = $year . '-0' . $month . '-01' ;
     $lastday = date ( 'Y-m-d' , strtotime ( "$firstday +1 month -1 day" ));
   } else {
     $firstday = date ( 'Y-m-01' , strtotime ( date ( 'Y' , $timestamp ). '-' .( date ( 'm' , $timestamp )+1). '-01' ));
     $lastday = date ( 'Y-m-d' , strtotime ( "$firstday +1 month -1 day" ));
   }
   return   array ( $firstday , $lastday );
}

  下月日期的代码看起来比较长一点,因为date()转不了类似2018-13-01这种东西,它会直接回到1970,所以前面需要处理一下12月的问题,除了12月就直接月份+1就OK啦。

  总得来说,还是很方便的,日期函数太强大了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值