`
抢街饭
  • 浏览: 44425 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

php日期方面

    博客分类:
  • php
阅读更多

date_default_timezone_set('PRC');
/**
* 求取从某日起经过一定天数后的日期,
* 排除周六周日和节假日
* @param $start       开始日期
* @param $offset      经过天数
* @param $exception 例外的节假日
* @param $allow       允许的日期(预留参数)
* @return
*  examples:输入(2010-06-25,5,''),得到2010-07-02
*/
function getEndDay( $start='now', $offset=0, $exception='', $allow='' ){
    //先计算不排除周六周日及节假日的结果
    $starttime = strtotime($start);
    $endtime = $starttime + $offset * 24 * 3600;
    $end = date('Y-m-d', $endtime);
    //然后计算周六周日引起的偏移
    $weekday = date('N', $starttime);//得到星期值:1-7
    $remain = $offset % 7;
    $newoffset = 2 * ($offset - $remain) / 7;//每一周需重新计算两天
    if( $remain > 0 ){//周余凑整
        $tmp = $weekday + $remain;
        if( $tmp >= 7 ){
            $newoffset += 2;
        }else if( $tmp == 6 ){
            $newoffset += 1;
        }
        //考虑当前为周六周日的情况
        if( $weekday == 6 ){
            $newoffset -= 1;
        }else if( $weekday == 7 ){
            $newoffset -= 2;
        }
    }
    //再计算节假日引起的偏移
    if( is_array($exception) ){//多个节假日
        foreach ($exception as $day){
            $tmp_time = strtotime($day);
            if( $tmp_time>$starttime && $tmp_time<=$endtime ){//在范围(a,b]内
                $weekday_t = date('N', $tmp_time);
                if($weekday_t <= 5){//防止节假日与周末重复
                    $newoffset += 1;
                }
            }
        }
    }else{//单个节假日
        if( $exception!='' ){
            $tmp_time = strtotime($exception);
            if( $tmp_time>$starttime && $tmp_time<=$endtime ){
                $weekday_t = date('N', $tmp_time);
                if($weekday_t <= 5){
                    $newoffset += 1;
                }
            }
        }
        
    }
    //根据偏移天数,递归做等价运算
    if($newoffset > 0){
        #echo "[{$start} -> {$offset}] = [{$end} -> {$newoffset}]"."<br />\n";
        return getEndDay($end,$newoffset,$exception,$allow);
    }else{
        return $end;
    }
}
/**
* 暴力循环方法
*/
function getEndDay2( $start='now', $offset=0, $exception='', $allow='' ){
    $starttime = strtotime($start);
    $tmptime = $starttime + 24*3600;
    
    while( $offset > 0 ){
        $weekday = date('N', $tmptime);
        $tmpday = date('Y-m-d', $tmptime);
        $bfd = false;//是否节假日
        if(is_array($exception)){
            $bfd = in_array($tmpday,$exception);
        }else{
            $bfd = ($exception==$tmpday);
        }
        if( $weekday<=5 && !$bfd){//不是周末和节假日
            $offset--;
            #echo "tmpday={$tmpday}"."<br />";
        }
        $tmptime += 24*3600;
    }
    
    return $tmpday;
}
$exception = array(
    '2010-01-01','2010-01-02','2010-01-03',
    '2010-04-03','2010-04-04','2010-04-05',
    '2010-05-01','2010-05-02','2010-05-03',
    '2010-06-14','2010-06-15','2010-06-16',
    '2010-09-22','2010-09-23','2010-09-24',
    '2010-10-01','2010-10-02','2010-10-03','2010-10-04',
    '2010-10-05','2010-10-06','2010-10-07',
    
);
//echo getEndDay('2010-08-27',3,'');
//echo getEndDay('2010-06-25',15,'2010-07-07');
$t1 = microtime();
echo getEndDay('2010-05-12',66,$exception)."<br />";
$t2 = microtime();echo "use ".($t2-$t1)." s <br />";
echo getEndDay2('2010-05-12',66,$exception)."<br />";
$t3 = microtime();echo "use ".($t3-$t2)." s <br />";
//转载 http://bbs.phpchina.com/thread-186689-1-1.html
分享到:
评论

相关推荐

    PHP从入门到精通.pdf-入门教程.CHM

    全书共分27章,包括初识.PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    PHP从入门到精通

    、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与 Session、图形图像处理技术、文件系统、面向对象、PHP加密技术、MySQL数据 库基础、phpMyAdmin图形化管理工具、PHP操作MySQL数据库、...

    PHP从入门到精通PPT

    全书共分4篇25章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    PHP从入门到精通 源码

    全书共分24章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、文件...

    PHP从入门到精通.pdf

    全书共分27章,包括初识.PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    PHP从入门到精通第二版

    本书从初学者角度出发,通过通俗易懂的语言,丰富多彩的实例,详细介绍了使用PHP进行网络开发应该掌握的各方面技术。全书共分24章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、...

    PHP从入门到精通(第2版)(潘凯华).(扫描版)

    全书共分24章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、文件...

    php使用strtotime和date函数判断日期是否有效代码分享

    一种方法可以使用正则,但是正则其实理解起来蛮麻烦的,而且使用正则在检验有效性方面也不太好。这里提供一个方法,主要是使用strtotime和date函数进行检验。直接上函数: 复制代码 代码如下:/** * 校验日期格式...

    PHP 从入门到精通

    全书共分27章,包括初识.PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、...

    [推荐]php集成环境绿色版

    二、该程式是从phpStudy2011B改进而来,主要改动以下几个方面: 1、绿色集成,无须安装、更适合PHP程式打包发布 2、升级MySQL至5.1.57。超级权限帐号:root 密码:123456 3、集成memcached分布式内存对象缓存...

    mysql中取系统当前时间,当前日期方便查询判定的代码

    获取当前时间的MySql时间函数处理MySql时间日期的函数有很多,下面为您介绍的就是用于获取当前时间的MySql时间函数,如果您对此感兴趣的话,不妨一看下面为您介绍的MySql时间函数用于获取当前时间,该MySql时间函数...

    php程序设计课程大作业——基于PHP、MySQL的web端借还书系统.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    [PHP从入门到精通].(潘凯华)

    全书共分24章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、文件...

    基于原生PHP7.4编写的动态博客系统,大二PHP动态网页设计期末作品,包含SQL脚本与数据库文件。.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    PHP购物商城管理系统,采用php+mysql开发,原生代码无框架,代码易读易懂,面向过程编程,大学生编码手法。.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    订餐系统PHP 带后台.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    里程密PHP开源博客系统.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    PHP+MySQL实现的问卷调查系统.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

    基于PHP+Apach的后台管理系统开发.zip

    PHP内置丰富的数据类型(如整型、浮点型、字符串、数组、对象等),并提供了大量的预定义函数,涵盖了字符串操作、数学运算、文件系统处理、日期时间处理、数据库连接等常见功能,极大提高了开发效率。 在Web开发中...

Global site tag (gtag.js) - Google Analytics