php 计算两个日期这间的间隔天数

例1

直接把日期转换

 代码如下 复制代码

function daysbetweendates($date1, $date2){
    $date1 = strtotime($date1);
    $date2 = strtotime($date2);
    $days = ceil(abs($date1 - $date2)/86400);
    return $days;
}

例2

 代码如下 复制代码

<?php
functionmaketime($date)
{
list($year,$month,$day) = explode('-',$date);
returnmktime(0,0,0,$month,$day,$year);
}
$date1 = '2007-01-08';
$date2 = '2007-03-01';
$d = (maketime($date2) - maketime($date1)) / (3600*24);
echo'相差$d 天';

?>

例3

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

 

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

php 计算两个日期这间的间隔天数的相关文章

Excel怎么使用text函数计算两个日期相差的时间?

  Excel怎么使用text函数计算两个日期相差的时间?          1.先新建一个空白表格,重命名"计算两个日期的时间长"; 2.打开表格输入相应的类别标题,如"姓名.出差时间.返回时间.出差时长"; 3.在"姓名.出差时间.返回时间"类别里填入相应的内容; 4.在"D3"单元格输入公式"=TEXT(C3-B3,"[h]:mm:ss")",就会显示相差的时间了; 5.选中&qu

php计算两个日期相差天数的方法

本文实例讲述了php计算两个日期相差天数的方法.分享给大家供大家参考.具体实现方法如下: <?php /** * 求两个日期之间相差的天数 * (针对1970年1月1日之后,求之前可以采用泰勒公式) * @param string $day1 * @param string $day2 * @return number */ function diffBetweenTwoDays ($day1, $day2) { $second1 = strtotime($day1); $second2 = s

JavaScript计算两个日期时间段内日期的方法

 这篇文章主要介绍了JavaScript计算两个日期时间段内日期的方法,涉及javascript操作时间的技巧,需要的朋友可以参考下     本文实例讲述了JavaScript计算两个日期时间段内日期的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: /************************* * 计算两个日期时间段内所有日期 * * @param value1 * 开始日期 YYYY-MM-DD * @param value2 * 结束日期 * return 日期数组

JAVA计算两个日期相差的实例_java

在Java开发物流或是其他功能的时候会用到两个日期 相差多天的数据,所以整理了一下备用.调用方式: 复制代码 代码如下: long date1 = getDateTime("20121201");//可改成自己的日期类型,但以 "20121212"这种格式 long date2 = getDateTime("20121212");   int day = dateInterval(date1, date2);   System.out.print

link用循环计算两个日期之间有多少工作日

问题描述 link用循环计算两个日期之间有多少工作日 用循环计算两个日期之间有多少工作日,link怎么实现?用takewhile怎么代替while? 解决方案 不考虑过节和轮休,写一个给你 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class P

Java 计算两个日期相差的天数

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class test16 { /** * @param args * @throws ParseException */ public static void main(String[] args) throws ParseException { /

incorrect-mysql中日期有空值,并且是VARchar(255)类型,怎么计算两个日期差?

问题描述 mysql中日期有空值,并且是VARchar(255)类型,怎么计算两个日期差? 问题:将excel表格导入到mysql中,字段格式都是VARCHAR(255),现在需要计算两个日期时间差值.excel表格如图所示:mysql查询的目的是: 预付:验证时间-下单时间超过3小时,或者验证时间为空 现付:验证时间与下单时间之差在3小时以内的为现付 目的:按城市分类,计算每个城市的预付.现付的数量. 下图是自己编写的sql代码,一直报错[Err] 1292 - Truncated incor

JavaScript计算两个日期时间段内日期的方法_javascript技巧

本文实例讲述了JavaScript计算两个日期时间段内日期的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /*************************  * 计算两个日期时间段内所有日期  *   * @param value1  *            开始日期 YYYY-MM-DD  * @param value2  *            结束日期  * return 日期数组  */  function dataScope(value1, value2

分享PHP计算两个日期相差天数的代码_php技巧

本文实例讲述了php计算两个日期相差天数的方法.分享给大家供大家参考.具体实现方法如下: <?php $date1 = date( 'Y-m-d' ); $date2 = "2015-12-04"; $diff = abs(strtotime($date2) - strtotime($date1)); $years = floor($diff / (365*60*60*24)); $months = floor(($diff - $years * 365*60*60*24) /