• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数_php技巧

php 搞代码 4年前 (2022-01-26) 25次浏览 已收录 0个评论

使用PHP实现计算两个日期间隔的年、月、周、日数:

<?php<BR>    function format($a,$b){<BR>        //检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大<BR>        if(strtotime($a)>strtotime($b)) list($a,$b)=array($b,$a);<BR>        $start  = strtotime($a);<BR>        $stop   = strtotime($b);<BR>        $extend = ($stop-$start)/86400;<BR>        $result['extends'] = $extend;<BR>        if($extend<7){                //如果小于7天直接返回天数<BR>            $result['daily'] = $extend;<BR>        }elseif($extend<=31){        //小于28天则返回周数,由于闰年2月满足了<BR>            if($stop==strtotime($a.'+1 month')){<BR>                $result['monthly'] = 1;<BR>            }else{<BR>                $w = floor($extend/7);<BR>                $d = ($stop-strtotime($a.'+'.$w.' week'))/86400;<BR>                $result['weekly']  = $w;<BR>                $result['daily']   = $d;<BR>            }<BR>        }else{<BR>            $y=    floor($extend/365);<BR>            if($y>=1){                //如果超过一年<BR>                $start = strtotime($a.'+'.$y.'year');<BR>                $a     = date('Y-m-d',$start);<BR>                //判断是否真的已经有了一年了,如果没有的话就开减<BR>                if($start>$stop){<BR>                    $a = date('Y-m-d',strtotime($a.'-1 month'));<BR>                    $m =11;<BR>                    $y--;    <BR>                }<BR>                $extend = ($stop-strtotime($a))/86400;<BR>            }<BR>            if(isset($m)){<BR>                $w = floor($extend/7);<BR>                $d = $extend-$w*7;<BR>            }else{<BR>                $m = isset($m)?$m:round($extend/30);<BR>                $stop>=strtotime($a.'+'.$m.'month')?$m:$m--;<BR>                if($stop>=strtotime($a.'+'.$m.'month')){<BR>                    $d=$w=($stop-strtotime($a.'+'.$m.'month'))/86400;<BR>                    $w = floor($w/7);<BR>                    $d = $d-$w*7;<BR>                }<BR>            }<BR>            $result['yearly']  = $y;<BR>            $result['monthly'] = $m;<BR>            $result['weekly']  = $w;<BR>            $result['daily']   = isset($d)?$d:null;<BR>        }<BR>        return array_filter($result);<BR>    }<br><br>    print_r(format('2012-10-1','2012-12-15'));<BR>?><BR>


运行结果:
Array([extends]=>75[monthly]=>2[weekly]=>2)

php 查询某天所在的周数及对应周的起始日期

/**<BR>* @file<BR>* @version  1.1<BR>* @author  QQ83989686<BR>* @date  2012-8-7 最后修改时间<BR>* @brief <BR><mark style="color:transparent">本%文来源gaodaimacom搞#^代%!码网@</mark>搞代gaodaima码*/<BR>    //获取某个日期的 周数、周对应的开始结束时间<BR>    private function getWeekStartEndDay($day)<BR>    {<BR>        $g  = strftime("%u",strtotime($day));<BR>        return array('week_num'=>strftime("%V",strtotime($day)),'week_start_day'=>strftime('%Y-%m-%d',strtotime($day)-($g-1)*86400),'week_start_day_cn'=>strftime('%Y年%m月%d日',strtotime($day)-($g-1)*86400),'week_end_day'=>strftime('%Y-%m-%d',strtotime($day) + (7-$g)*86400),'week_end_day_cn'=>strftime('%Y年%m月%d日',strtotime($day) + (7-$g)*86400));<BR>    }<BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址