找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 813|回复: 0
打印 上一主题 下一主题

PHP获取指定时间段之间的 年,月,天,时,分,秒

[复制链接]

2588

主题

2588

帖子

7694

积分

论坛元老

Rank: 8Rank: 8

积分
7694
跳转到指定楼层
楼主
发表于 2018-2-14 05:35:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            核心代码:
Class Utils {
     /**
         * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出来的数据格式转换成时间秒数
         * @param string $datetime
         */
        public function fmDatetime($datetime) {
          $year = substr($datetime,0,4);
          $month = substr($datetime,5,2);
          $day = substr($datetime,8,2);
          $hour = substr($datetime,11,2);
          $min = substr($datetime,14,2);
          $sec = substr($datetime,17,2);
          return mktime($hour,$min,$sec,$month,$day,0+$year);
        }
        /**
         *
         * 根据俩个时间获取俩个时间的 包含的 年,月数,天数,小时,分钟,秒
         * @param String $start
         * @param String $end
         * @return ArrayObject
         */
         private function diffDateTime($DateStart,$DateEnd){
                $rs = array();
               
                $sYear = substr($DateStart,0,4);
                $eYear = substr($DateEnd,0,4);
               
                $sMonth = substr($DateStart,5,2);
                $eMonth = substr($DateEnd,5,2);
               
                $sDay = substr($DateStart,8,2);
                $eDay = substr($DateEnd,8,2);
               
                $startTime = $this->fmDatetime($DateStart);
                $endTime = $this->fmDatetime($DateEnd);
                $dis = $endTime-$startTime;//得到俩个时间的秒数
                $d = ceil($dis/(24*60*60));//得到天数
                $rs['day'] = $d;//天数
                $rs['hour'] = ceil($dis/(60*60));//小时
                $rs['minute'] = ceil($dis/60);//分钟
                $rs['second'] = $dis;//秒数
                $rs['week'] = ceil($d/7);//周
               
                $tem = ($eYear-$sYear)*12;//月份
                $tem1 = $eYear-$sYear;//年
                if($eMonth-$sMonth=0){
                                $tem ++;
                                $tem1++;
                        }
                }else if($eMonth-$sMonth>0){//月份相减正负
                        $tem1++;
                        if($eDay-$sDay>=0){//且日期相减为正数
                                $tem +=($eMonth-$sMonth)+1;
                        }else{
                                $tem +=($eMonth-$sMonth);
                        }
                }
                $rs['month'] = $tem;
                $rs['year'] = $tem1;
               
                return $rs;
        }
}
一年多一天,返回的是2年,一个月多一天返回的是2个月,以此推......项目需要,才做此出来,开始我也到网上找这样的例子,但大家都是把年就按365天来算,月就按30天来算,这样算出来的结果肯定是没用的,年有可能是366天,月有可能是31,29,28都有可能
            
            
您可能感兴趣的文章:
  • 用php获取本周,上周,本月,上月,本季度日期的代码
  • php 获取一个月第一天与最后一天的代码
  • PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
  • php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
  • php判断两个日期之间相差多少个月份的方法
  • PHP获取某个月最大天数(最后一天)的方法
  • PHP使用strtotime获取上个月、下个月、本月的日期
  • php从身份证获取性别和出生年月
  • PHP计算近1年的所有月份
  • PHP获取当前日期及本周一是几月几号的方法
  • PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
  • PHP简单获取上月、本月、近15天、近30天的方法示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端