文档章节

判断某日是否是节假日

郭周园
 郭周园
发布于 10/11 14:28
字数 357
阅读 43
收藏 0
public function is_holiday(){
    //取出系统配置
    if(Redis::exists('sysconfig')){
        $sysconfig = json_decode(Redis::get('sysconfig'),true);
    }else{
        $sysconfig = Sysconfig::find(1);
        Redis::setex('sysconfig',600,json_encode($sysconfig));
    }

    //判断是否是节假日
    if(isset($sysconfig['holiday_control'])){
        //数据库字段 holiday_control 0-默认根据国家法定节假日,1-手动控制为节假日,2-手动控制为工作日
        if($sysconfig['holiday_control'] == 0){
            //取出缓存中本月的节假日列表
            if(Redis::exists('holiday_list')){
                $holiday_list = json_decode(Redis::get('holiday_list'),true);
                //判断今日是否是节假日
                if(in_array(date('d'),$holiday_list)){
                    $is_weekend = true;//是节假日
                }else{
                    $is_weekend = false;
                }
            }else{
                //用API获取本月所有的节假日
                $url = "http://www.easybots.cn/api/holiday.php?m=".date('Ym');
                $file = file_get_contents($url);
                $json = json_decode($file,true);

                //处理节假日数据并缓存到Redis
                $holiday_list = array();
                foreach($json as $value){
                    foreach($value as $key => $val){
                        if($val != 0){
                            $holiday_list[] = $key;
                        }
                    }
                }

                //计算Redis过期时间
                $begin_time = time();
                $end_time = mktime(23,59,59,date('m'),date('t'),date('Y'));

                //缓存到Redis
                Redis::setex('holiday_list',$end_time-$begin_time,json_encode($holiday_list));

                //进行判断是否是节假日
                if(in_array(date('d'),$holiday_list)){
                    $is_weekend = true;//是节假日
                }else{
                    $is_weekend = false;
                }
            }
        }elseif($sysconfig['holiday_control'] == 1){
            //如果 holiday_control 不为0,就是手动控制节假日,1是节假日,2是工作日
            $is_weekend = true;//是节假日
        }else{
            $is_weekend = false;
        }
    }else{
        //如果数据库不存在节假日控制字段,便使用最原始的判断是否周末控制
        if(date('w') == 6 or date('w') == 0){
            $is_weekend = true;//是周末
        }else{
            $is_weekend = false;
        }
    }
    return $is_weekend;
}

© 著作权归作者所有

郭周园
粉丝 2
博文 109
码字总数 15536
作品 0
成都
后端工程师
私信 提问
php怎么判断是否为节假日?

php怎么判断是否为节假日?????

T陈震
2017/12/26
3.9K
10
SQLServer中如何写当遇到周末和节假日则工作日期向后延续到周末和节假日结束的语句?

SQLServer中如何写当遇到周末和节假日则工作日期向后延续到周末和节假日结束的语句?其中周末我可以用datepart(dw,shijian)的值来判断,节假日有单独的表vocation,假日的开始时间是startti...

非著名魔兽解说
2014/04/30
559
0
【C语言】第一个C语言小程序 —— 日期算法和万年历

1. 写了个万年历的功能练练手。还没有写交互的代码,只是把方法写完了。先给出头部和方法签名 #include #define DAYSPERWEEK 7#define MONTHS 12#define DATE_HEADER " Sun Mon Tues Wed Th...

跑呀跑
2018/08/26
0
0
sql实现n日均线

ifCOL_LENGTH('book1','n日均线')isnotnull/*判断表中是否存在列名为n日 均线的列,存在就删除,不存在就创建,book表示数据表名*/ begin altertable book1 /修改表/ dropcolumn n日均线/删除......

舞血潮
2014/05/07
0
0
获取中国法定节假日信息 - 节假日API

介绍 免费节假日API 开源了,可以离线调用, 可以集成到自己系统中 功能 检查具体日期是否为节假日,工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2;(对应支付工资比例分别为...

xiaogg
02/28
6.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

SQL性能优化

SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SUM、COUNT——HAVING——SELECT——DISTINCT——ORDER BY——LIMIT 与写SQL的顺序不同,SQL的执行顺序并...

一字见心
2分钟前
2
0
x001-版本介绍

python版本介绍 目前有2 和 3 有很多企业用的代码是2版本,随着技术的发展,以后用3的会成为大趋势 python3的安装 yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-d...

侠客行之石头
5分钟前
2
0
聊聊rocketmq的TransientStorePool

序 本文主要研究一下rocketmq的TransientStorePool TransientStorePool rocketmq-all-4.6.0-source-release/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java publi......

go4it
昨天
5
0
笔记

场外借贷, 质押 ,托管, 永续合约. 场外借贷,n签合同. 新功能 证券交易组负责中信证券机构及个人投资交易相关系统,服务机构及个人投资客户, 涉及到两融、期权、 期货、做市等境内境外创新业...

MtrS
昨天
5
0
Pycharm最新激活码2019----亲测可用

今天来讲解下pycharm的激活码使用 其实非常简单 把激活码填入下面的地方即可。如果不知道在哪里,那么就选菜单栏里的help再选Register就会弹出下面的界面 激活码网址里面有 lookdiv.com 里面...

chenhongjiang
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部