首页
学习
活动
专区
工具
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开始)。

15310

如何用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.1K20

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++)//寻找年数上差异

4.9K60

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

计算两个日期间距 在开发中我们常要使用到日期格式转换或者是计算两个时间间距,因此很有必要自己封装一个通用工具类方便自己以后调用使用,方便自己开发,也可使项目更简洁。...一、当传参是两个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.5K20

盘一盘 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.4K20

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

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

2.5K20

你需要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

3.9K31

Power BI分解销售目标

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

2.2K30

『自己构建节假日API』

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

4.2K40

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

5.6K30

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

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

1.2K10

甘特图是用来干什么

以作者亨利·甘特先生名字命名。甘特图内部思想很简单,即任何特定项目的活动顺序持续时间都可以通过活动列表时间刻度以图形方式直观地表示出来。...基本上它是一个折线图,水平轴表示时间,垂直轴表示活动(项目),折线表示整个期间计划实际完成活动情况。 甘特图含义有哪些?...1.以图形或表格形式显示活动; 2.现在是显示进度通用方法; 3.施工中应包括实际日历天数工期,时间表中不应包括周末节假日。 甘特图用于什么?...它还可以帮助您考虑人力,资源,日期,重复因素项目的关键部分,并且将各个方面的10个甘特图集成到一张总图中。使用甘特图,您可以直观地查看任务进度,资源利用率等。...许多小白项目管理人员都不知道如何使用专业软件绘制甘特图,因此他们使用传统Excel工具进行绘制。尽管Internet上有许多关于“如何使用Excel绘制甘特图”教程,但我个人非常反对这些内容。

3.1K10
领券