首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

yii2如何计算日期之间的天数不包括周末和节假日

在Yii2中,要计算日期之间的天数不包括周末和节假日,可以按照以下步骤进行操作:

  1. 首先,需要创建一个包含所有节假日的数组。这个数组可以包含国家或地区的法定节假日,以及其他特殊的非工作日。例如:
代码语言:txt
复制
$holidays = [
    '2022-01-01', // 元旦
    '2022-02-12', // 春节
    '2022-04-04', // 清明节
    // 其他节假日...
];
  1. 接下来,需要定义一个函数来计算两个日期之间的工作日天数。可以使用Yii2的日期时间类(\yii\helpers\DateTime)来处理日期相关的操作。以下是一个示例函数:
代码语言:txt
复制
use yii\helpers\DateTime;

function getWorkingDays($startDate, $endDate, $holidays)
{
    $start = new DateTime($startDate);
    $end = new DateTime($endDate);
    $days = 0;

    while ($start <= $end) {
        $dayOfWeek = $start->format('N'); // 获取当前日期的星期几(1-7,1表示星期一)
        $isHoliday = in_array($start->format('Y-m-d'), $holidays); // 检查当前日期是否是节假日

        if ($dayOfWeek < 6 && !$isHoliday) { // 如果是工作日且不是节假日
            $days++;
        }

        $start->modify('+1 day'); // 增加一天
    }

    return $days;
}
  1. 调用上述函数来计算日期之间的工作日天数。例如:
代码语言:txt
复制
$startDate = '2022-01-01';
$endDate = '2022-01-10';

$workingDays = getWorkingDays($startDate, $endDate, $holidays);
echo "工作日天数:{$workingDays}天";

以上代码将计算从2022年1月1日到2022年1月10日之间的工作日天数,并输出结果。

请注意,以上代码仅提供了一个基本的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。另外,关于Yii2的更多信息和使用方法,可以参考腾讯云的Yii2产品介绍页面:Yii2产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何计算两个日期之间天数

计算两个日期之间天数很实用,我一般用sq SELECT DATEDIFF("2089-10-01","2008-08-08") AS "北京奥运会开幕式天数" 如果用Go计算两个日期之间天数,可以使用...以下是步骤相应代码示例: 解析日期:需要先将输入日期字符串转换为 time.Time 类型。可以通过 time.Parse 函数来实现,它接受日期格式日期字符串作为参数。...相应 Go 代码示例: package main import ( "fmt" "time" ) // 计算两个日期之间天数差 func daysBetweenDates(date1, date2...,将它们解析为 time.Time 对象,然后计算它们之间差异,并将这个差异转换为天数。...然后,根据月份是否为闰年调整这个天数,包括在月份之前所有天数当前月份中天数(通过day - 1计算,因为天数是从1开始)。

21110

如何用Python计算日期之间天数

(2023, 10, 10) # 计算日期差 delta = date1 - date2 # 提取天数差 days_difference = delta.days print(f"日期1与日期2相差...计算指定日期今天差多少天 # 给定日期字符串 date_string = '2023-10-17 01:05:16' # 将日期字符串转换为 datetime 对象 given_date = datetime.strptime...- given_date # 提取天数差 days_difference = time_difference.days print(f"给定日期今天相差 {days_difference} 天。...# 计算日期差 delta = date1 - date2 # 提取天数差 days_difference = delta.days print(f"日期1与日期2相差 {days_difference...通过这三种方法,可以轻松地计算两个日期之间天数差。这些方法对于日常编程任务中日期时间处理非常有用。无论是在任务计划、数据分析还是应用程序开发中,了解如何计算日期差都将是一个有用技能。

1.4K20
  • 25:计算两个日期之间天数

    25:计算两个日期之间天数 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 给定两个日期计算相差天数。...比如2010-1-12010-1-3相差2天。 输入共两行: 第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。...相邻两个整数之间用单个空格隔开。 年份范围在1~3000。保证日期正确且结束日期不早于起始日期。输出输出一个整数,即是两个日期相差天数。...样例输入 2008 1 1 2009 1 1 样例输出 366 提示闰年被定义为能被4整除年份,但是能被100整除而不能被400整除年是例外,它们不是闰年。闰年2月份有29天。...>bgmonth>>bgday; 12 cin>>enyear>>enmonth>>enday; 13 for(int i=bgyear;i<=enyear+1;i++)//寻找年数上差异

    5K60

    小工具|计算两个日期之间天数

    计算两个日期间距 在开发中我们常要使用到日期格式转换或者是计算两个时间间距,因此很有必要自己封装一个通用工具类方便自己以后调用使用,方便自己开发,也可使项目更简洁。...一、当传参是两个Date类型时: /** * 计算两个日期之间相差天数 * @param date1 较小时间 * @param date2 较大时间 *...@return 相差天数 * @throws ParseException * calendar 对日期进行时间操作 * getTimeInMillis() 获取日期毫秒显示形式...return Integer.parseInt(String.valueOf(between_days)); } 二、当传参是两个string类型时: /** * 字符串日期格式计算...Date类型时: /** * 字符串日期格式date日期格式计算 * @param date1 * @param date2 * @return *

    3.2K30

    Android编程实现计算两个日期之间天数并打印所有日期方法

    本文实例讲述了Android编程实现计算两个日期之间天数并打印所有日期方法。...分享给大家供大家参考,具体如下: 以下代码是计算两个日期之间天数,并打印所有日期 注:开始时,增加天数时,一天毫秒数直接用24*60*60*1000来逐步增加天数,再测试时发现,当两个日期之间天数超过...long ONE_DAY_MS=24*60*60*1000 /** * 计算两个日期之间日期 * @param startTime * @param endTime */ private void...mills_select,int code){ Date date_start=new Date(startTime); Date date_end=new Date(endTime); //计算日期从开始时间于结束时间...: 在线日期/天数计算器: http://tools.zalou.cn/jisuanqi/date_jisuanqi 在线万年历日历: http://tools.zalou.cn/bianmin/wannianli

    3.7K10

    Java 中,如何计算两个日期之间差距?

    参考链接: Java程序计算两组之间差异 今天继续分享一道Java面试题:  题目:Java 中,如何计算两个日期之间差距? ...查阅相关资料得到这些知识,分享给大家:  java计算两个日期相差多少天小时分钟等    转载2016年08月25日 11:50:00  1、时间转换  data默认有toString() 输出格林威治时间...,比如说Date date = new Date(); String toStr = date.toString(); 输出结果类似于: Wed Sep 16 19:02:36 CST 2012   ...* 24* 60* 60;     longnh = 1000* 60* 60;     longnm = 1000* 60;     // long ns = 1000;     // 获得两个时间毫秒时间差异...计算差多少小时     longhour = diff % nd / nh;     // 计算差多少分钟     longmin = diff % nd % nh / nm;     // 计算差多少秒

    7.6K20

    Power BI追踪春节业绩实操

    上方折线图蕴含了丰富信息。首先因为春节在1月2月之间每年位置不会相同,因此制定业绩规划时候一般2个月综合考虑,图中时间线为1-2月完整日历。日历上使用虚线标注清楚了今年同期节日状况。...最上方横线为1-2月总目标,告诉我们总体要努力到什么位置。接下来讲解如何在Power BI实操。 1.数据准备 需要数据有四个,分别是日期表,销售目标,实际业绩销售权重系数。...在相同月份,去年2月今年2月可能天数不同,无法完全复制;即使天数完全相同,去年当月有4个完整周末,今年可能有5个完整周末,也会对销售趋势造成不同影响;另外像春节这样节假日对销售趋势影响也非常大。...我们使用销售权重系数方法可以赋予周一到周日,以及所有节假日每天不同权重,将以上因素都考虑到,使得目标分解更加合理。...如何设置销售权重系数可以参考此文:《Power BI分解销售目标》,虚拟案例分解完结果如下: 2.指标计算 基础指标: 销售目标 = SUM('销售目标'[业绩目标]) 销售权重系数 = SUM(

    2.6K20

    Python生成中国节假日工作表,快速给数据库内生成工作日历

    有时候,我们处理一些业务,比如:计算员工请假时间工作日;就需要数据库内存在一张工作日历,记录调休节假日。实际上,是有很多公共接口。...对于中国节假日,最准确肯定是中国政府网每年下半年发布次年节假日调休表(每次都是第一时间关注又要调休几次、最多要连续上几天班╳╳○○),比如: 2024年放假安排如何获取一个离线日历库呢?...ChineseCalendarLKI/chinese-calendar是基于Python一个日期项目,如果你观察源码,你会发现日期数据是使用枚举类Python字典存储:constants.py:...比较有趣是节日中英名字映射、放假天数,LKI/chinese-calendar使用是枚举类:class Holiday(Enum): def __new__(cls, english, chinese...;CALENDAR_DATE: 数据对应日期;DATE_TYPE: 日期类型,0为普通工作日,1为节日放假,2为节日调休补班,3为周末放假;COMMENTS: 备注节日。

    52911

    盘一盘 Python 特别篇 19 - 天数计数|年限

    在金融产品估值时,细节最多就是如何生成日期年限了,最核心细节如下: 支付日通常不会落在周末公共假期上,如落到,那么根据“顺延”或“修正顺延”到后一个工作日,或者“提前”或“修正提前”到前一个工作日...两个日期之间计数有对相应惯例,比如“Actual/365”计算天数就是两个日期之间实际天数,而30/360“”有着特殊算法。 日期计数惯例解决这个问题。...Act/Act 这两个惯例来自 2006 年 ISDA 文件里面的 4.16(b),计算年限方法为“非闰年里天数/365 + 闰年里天数/366”。这里天数计算包括起始日不包括结束日。...Act/360 该惯例来自 2006 年 ISDA 文件里面的 4.16(e),计算年限方法为 (d2 – d1)/ 360。这里天数计算包括起始日结束日。...Bus/252 年限等于包括起始日不包括结束日之间工作日天数除以 252。该惯例用于巴西市场。 下图给出基本日期计数惯例总结: ?

    1.5K20

    数据分析产品同比、环比设计要点总结

    二、不同对比周期业务场景 1.增长率分析 环比:用于分析本期业务表现前一周期对比情况,如今天和昨天比,业务表现如何,是涨还是跌呢?像买理财或者股票,希望每天都比昨天涨一些。...周同比:很多业务有明显周期性,比如OTA行业,多数人是只有周末才有空出门旅行,那周一到周五业务表现周末会有很大差异,用周六数据环比周五,会有比较大跌幅。...节假日年同比:旅游行业节假日属性很强,端午、中秋、春节等这些假日每年日期又不太一样,很多时候看业务在假日期表现时,要对比去年相同节假日期表现,包括节前X天,节后X天等。...2.周颗粒度数据同比计算 每周对应去年同期日期基本上是对不上,一般处理方式是,建立每一年日期维度表,即对每年周进行1-52编号,周同比计算时,可以用当前周编号,减去一年(52周)周号计算...方式二:本期上期相同天数范围对比,例如:今天7月20日,7月数据环比6月,是用7月1日-7月20日数据对比6月1日-6月20日数据,优点是数据对标范围一致,缺点是对比日期数据需要动态计算,尤其对于

    2.7K20

    你需要Excel常用函数都在这里!

    工作日不包括周末专门指定假日。在计算发票到期日、预期交货时间或工作天数时,可以使用函数 WORKDAY 来扣除周末或假日。 start_date 必需。开始日期。 days 必需。...start_date之前或之后不含周末节假日天数。 days 为正值将生成未来日期;为负值生成过去日期。 holidays 可选。...NETWORKDAYS() NETWORKDAYS(start_date, end_date, [holidays]) 返回参数 start_date end_date 之间完整工作日数值。...可以使用函数 NETWORKDAYS,根据某一特定时期内雇员工作天数计算其应计报酬。 start_date 必需。开始日期。 end_date 必需。终止日期。 holidays 可选。...months为正值将生成未来日期;为负值将生成过去日期 例:计算日期 判断是否是周末 =IF(WEEKDAY(A2,2)>5,"周末","否") 第n个工作日日期 =WORKDAY(D2,E2,D5

    4K32

    Power BI分解销售目标

    在相同月份,去年2月今年2月可能天数不同,无法完全复制;即使天数完全相同,去年当月有4个完整周末,今年可能有5个完整周末,也会对销售趋势造成不同影响。...当然,节假日对销售也有重大影响,本文为说明问题,简化处理,不考虑该因素。有需求读者对本文内容进行少许变更,即可对一些特殊日期进行特殊处理。...1.计算周一到周日每天销售系数 ---- 首先,将过去一年每天销售数据导入Power BI(或Excel Power Query),使用添加列方式加上星期。...使用“分组依据”功能,按照星期几对数据进行分组,计算星期几总销售额销售了多少天。...建立度量值计算每日销售目标,总目标乘以每天按销售系数生成销售占比。

    2.3K30

    『自己构建节假日API』

    核心很简单:懂 Go 基本语法,会使用内置库 time, 基本能搞到这些。 大纲: 节假日API 前段日子项目中需要使用国家规定节假日,所以需要获取这些数据。...其实获取这些数据方式也很多: 比如比较笨方式:搜索引擎,手动整理 使用一些免费开放第三方节假日 API: 不稳定,虽然这些数据也不需要频繁使用 使用一些付费第三方节假日 API:付费 于是本着简洁方式...,编写这么一个节假日库。...: 获取所有的历史数据 获取某年历史数据 获取某月历史数据 统计某年某月放假天数 统计某年放假天数 判断一个日期是否是节假日 判断一个日期是否是周末 判断一个日期是否是工作日 基于这些需求,构建了上文...API 以几个API 为例,详细操作如何实现?

    4.3K40

    ThinkPHP中获取指定日期后工作日具体日期方法

    思路: 1、获取到查询年份内所有工作日数据数组 2、获取到查询开始日期在工作日索引 3、计算需查询日期索引 4、获得查询日期 /*创建日期类型记录表格*/ CREATE TABLE `tb_workday...tinyint(2) NOT NULL COMMENT '日期类型:0、工作日;1、特殊工作日;2、法定节假日', PRIMARY KEY (`did`) ) ENGINE=InnoDB AUTO_INCREMENT...//return $weekArr[$number_wk]; } /** * 获取指定日期段内每一天日期 * @param string $startdate 开始日期 * @param string...($startdate); $etimestamp = strtotime($enddate); // 计算日期段内有多少天 $days = ($etimestamp - $stimestamp) /...N个工作日具体日期 * @param $startdate string 计算开始日期 需包含年月日信息 * @param $days int 间隔天数 * @return mixed 成功返回 对应日期

    1.9K20

    判断当前时间是否是法定节假日或工作日

    判断当前时间是否是法定节假日或工作日 一、介绍 二、实现 一、介绍 采用语言: Java 基于内网下采取配置文件方式, 来判断当前是否是节假日(包括周末调休上班日) 如果基于外网取请见 这里 工具类实现思路...: 将国家法定节假日调休上班日日期写入文本中, 然后读取该文本, 将加班日节假日分别放入一个list中 然后将当前毫秒数转成当前日期(年月日), 然后依次判断是否是法定节假日, 调休加班日周末...计算逻辑: 法定工作日= 调休加班日 + 非法定节假日 + 平时工作日(周1~5) 法定休息日= 非法定工作日 法定节假日= 不在法定节假日list中 二、实现 采取文件进行配置初衷是: 解耦...与其将节假日等相关日期写入放入代码中, 不如将日期相关配置独立出来, 方便配置同时对代码进行解耦 resources 目录下(与application.properties配置文件同级)新建一个文件...holiday.txt 存放当年法定节假日调休加班日等日期, 例如今年配置 #######法定节假日日期####### 2022-01-01 2022-01-02 2022-01-03 2022

    6K30

    万年历--节假日假期安排(续上文)

    封面图是对 fullCalendar 扩展以后完整demo,像素渣,凑合一下。。 上篇文章已经可以判断某一日期是节气、节假日还是阴历。...接下来针对节假日假期安排做下介绍。 节假日假期安排是根据官方发布信息为准,并不像节假日一样可以根据一定计算得到。因此未来假期安排是未知,万年历中也不会将未来假期标注出来。...一、静态资源文件处理 hao123万年历是以这样方式展示。 1. 定义节假日。 同样,2018年节假日信息也追加在该对象中。 2....weekend: 周末 rest: 法定节假日,放假 work: 法定节假日调休日,即周末需要上班 vacation: 假期,restwork累加 solar: 二十四节气...根据昨天文章,可以得到某一日期类型。针对不同日期类型,返回不同css 类。在写入 html 时,将css类即样式特殊处理即可。 4.

    1.2K10
    领券