php-获取从今天开始计算第5个工作日的日期
<?php
/**
* @author: hirry
* @email: ljhynlp@126.com
* @time: 2013-06-05
* @words: 获取从今天开始退回的第n个工作日的日期
*/
//定义当前时间
define("TODAY",date("Y-m-d"));
//定义要获取第几个工作日的日期
define("NUMDAY",'5');
//计算出第5天的时间
$fifthday = get_num_date(TODAY, NUMDAY);
//获取第5个工作日
echo "第5个工作日期是:";
echo get_fifth_work_date(TODAY, $fifthday);
//计算第n天的日期
function get_num_date($startDate, $numDate){
return date("Y-m-d", strtotime($startDate) + $numDate*3600*24);
}
//计算第5个工作日期
function get_fifth_work_date($toDay, $endday){
$num = check_work_day_num($toDay, $endday);
if($num==5){
echo $endday;
}else{
$endday2 = get_num_date(TODAY, NUMDAY+(NUMDAY-$num));
get_fifth_work_date($toDay, $endday2);
}
}
//计算工作日函数
function check_work_day_num($toDay, $endday){
$starttime = $toDay;
$endtime = $endday;
$starttime=date("z",mktime(0,0,0,substr($starttime,5,2),substr($starttime,8,2),substr($starttime,0,4))); $endtime=date("z",mktime(0,0,0,substr($endtime,5,2),substr($endtime,8,2),substr($endtime,0,4)));
$alltime=$endtime-$starttime+1;
//节假日的日期数据,目前按照年份配置就可以了
$ordainrest["2013"] = "05-01&3|&&|06-10&3|&&|10-01&5";
$ordainrest["2014"] = "05-01&3|&&|06-10&3|&&|10-01&5";
//计算去掉节假日的天数
$tmpa=explode("|&&|",$ordainrest[date("Y")]);
for($Tmpb=0;$Tmpb<count($tmpa);$Tmpb++){
$tmpc=explode("&",$tmpa[$Tmpb]);
$tmpsize=date("z",mktime(0,0,0,substr($tmpc[0],0,2),substr($tmpc[0],3,2),date("Y")));
if($tmpsize>=$starttime && $tmpsize<=$endtime){
$alltime=$alltime-$tmpc[1];
//从总的工作日中去掉法定日期
}
}
//计算去掉周末的天数
$weekdaynum = get_weekend_days($toDay, $endday);
$work_day_num = $alltime-($weekdaynum-1);
return $work_day_num;
}
//获取周末天数
function get_weekend_days($start_date,$end_date,$is_workday = false){
if (strtotime($start_date) > strtotime($end_date)) list($start_date, $end_date) = array($end_date, $start_date);
$start_reduce = $end_add = 0;
$start_N = date('N',strtotime($start_date));
$start_reduce = ($start_N == 7) ? 1 : 0;
$end_N = date('N',strtotime($end_date));
in_array($end_N,array(6,7)) & $end_add = ($end_N == 7) ? 2 : 1;
$alldays = abs(strtotime($end_date) - strtotime($start_date))/86400 + 1;
$weekend_days = floor(($alldays + $start_N - 1 - $end_N) / 7) * 2 - $start_reduce + $end_add;
if ($is_workday){
$workday_days = $alldays - $weekend_days;
return $workday_days;
}
return $weekend_days;
}
php-获取从今天开始计算第5个工作日的日期相关推荐
- uni-app获取当前位置并计算出某个地点距离
实现思路:先通过 uni.getLocation 接口获取当前位置获取当前位置,再与点击经纬度进行计算得出相差距离. 1.获取当前位置 需要先在manifest.json配置文件开启获取位置权限 // ...
- java获取时间并进行计算
前言 SimpleDateFormat使用介绍 提示:以下是本篇文章正文内容,下面案例可供参考 一.SimpleDateFormat是什么? 如果你对java源码比较了解.你会发现java对文字,数字 ...
- java 和 mysql 获取周 星期 的第一天 最后一天 或者 月的 日期(字符串转日期,日期转字符串,日期加减)...
获取周的第一天,最后一天 System.out.println(getStartEndDate("2016-05-01", 1)); 获取星期的第一天和最后一天 System.ou ...
- java计算当前日期后N个工作日的日期
如图,合同中有很多这种日期计算,故封装一通用工具类,记录于此.需求如下: WorkDayUtils如下: package com.sqds.utils;import org.apache.common ...
- Java计算时间区间内工作日天数
Java计算时间区间内工作日天数,并去除放假日与周末重叠数据 实际生活中,国家法定假日可能与周六周日重叠,所以需要去重.对于放假补班的特殊情况,需要另外补充 实际生活中,国家法定假日可能与周六周日重叠 ...
- PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]
PHP获取当前时间.时间戳的各种格式写法汇总[日期时间] 原文:PHP获取当前时间.时间戳的各种格式写法汇总[日期时间] 今天写下php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的 ...
- php 计算时间段内的工作日 与节假日
计算方法是取开始时间后的第一个星期一,如果结束时间大于等这一天则用第一个星期一至结束时间的时间的间隔取整周数与余数计算工作日与周末,再加上第一个周一前一周的工作日与节假日. /** 计算时间段内的工作 ...
- js日期计算,根据当前日期计算n个月后的日期
js计算n个月后的日期,并匹配月底,处理闰年,闰月 工作中遇到日期计算的需求,需要根据给定的日期计算出n个月后的日期,开始感觉挺简单一需求,因为现成的moment.js就有日期加月份计算的功能,但需求 ...
- oracle获取当前时间顺延指定工作日的日期
1.创建节假日表,包含周六日 create table EA_DEADLINE_HOLIDAY_CONFIG ( id NUMBER(19) not null, desc ...
最新文章
- 如何删除exchange2007默认证书
- JavaScript学习笔记(8)——JavaScript语法之运算符
- px word 表格宽度_word怎样批量修改表格的宽度(2)
- POJ2154(Pólya定理与欧拉函数优化)
- python3(十一)内置模块和类型转换
- java用户名检查数据库_登入界面账号密码是访问数据库,但登入问题时if判断时就是执行不了...
- 移动端1px线适配问题-------适配各种编译CSS工具 stylus sass styled-componet实现方法...
- ubantu 添加防火墙策略_Ubuntu防火墙安装和配置
- H-JTAG烧写程序的方法
- 【Word】无分页符却出现异常分页情况
- 【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part3前端搭建与可视化
- iOS开发——扫二维码下载APP
- CSS——微信朋友圈图片样式实现方法
- 「目前全网唯一2万字长文」从JS上下文到Chromium源码的极限拉扯!!兄弟姐妹们接好了!!...
- Excel2016 怎么做数据分类汇总
- [codeforces1139C]Edgy Trees
- 咸鱼软件应用—ubuntu切换中文
- 深度学习CV文章整理
- Unity 播放声音
- android gettext方法,android – EditText不返回getText()上的内容