求某月/某年的工作日(排除周末,寒暑假,过节)

/**
 * 求某月/某年的工作日
 * @param  array $search 搜索类型
 * @param  array $other_day 寒暑假和过节
 * @return array            工作日
 */
function get_workday($search = array(), $other_day = array())
{
    //获取搜索的所有天数
    //获取某月中每天
    if (isset($search[‘month‘])) {
        if ((int)$search[‘month‘] < 1 || (int)$search[‘month‘] > 12) {
            return false;
        }
        //转换为时间戳
        $start_date = strtotime($search[‘year‘].‘-‘.$search[‘month‘].‘-01‘);
        //判断是否求最后一个月
        if ((int)$search[‘month‘] == 12) {

            $end_date = strtotime(($search[‘year‘]+1).‘-01-01‘);
        }
        else {
            $end_date = strtotime($search[‘year‘].‘-‘.($search[‘month‘]+1).‘-01‘);
        }
    }
    //获取某年中每天
    elseif(isset($search[‘year‘])) {
        $start_date = strtotime($search[‘year‘].‘-01-01‘);
        $end_date = strtotime(($search[‘year‘]+1).‘-01-01‘);
    }

    $each_date = $start_date;
    while($each_date < $end_date) {
        $dates[] = $each_date;
        $each_date = strtotime(‘+1 day‘, $each_date);
        //或者 $each_date += $each_date+86400;
    }
    echo count($dates)."\n";

    // 1.排除周六周日
    $n = 0;
    foreach ($dates as $key => $timestamp) {
        $date_w = date(‘w‘, $timestamp);
        if ($date_w == 0 || $date_w == 6) {
            unset($dates[$key]);
        }
        $n++;
    }

    echo count($dates)."\n";

    // 2.排除节假日,过节
    $dates = array_diff($dates, $other_day);
    return $dates;
}

$search1 = array(
    ‘year‘ => ‘2015‘,
);
$search2 = array(
    ‘year‘ => ‘2014‘,
    ‘month‘ => ‘12‘
);
get_workday($search2);exit;
时间: 2024-08-29 08:40:57

求某月/某年的工作日(排除周末,寒暑假,过节)的相关文章

从两个时间段里分别计算出有几天工作日与周末

直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>从两个时间段里分别计算出有几天工作日与周末</title> <style type="text/css"> #calculate { background-color: #ff6444; padding: 10px

SQL计算时间差并排除周末

CREATE FUNCTION DI_FN_GET_WorkDay (@begin DATETIME , @end DATETIME ) RETURNS int BEGIN DECLARE @i INT , @j INT SET @i = 0 SET @j = 0 IF @end > @begin BEGIN WHILE DATEDIFF(d, DATEADD(d, @i, @begin), @end) <> 0 BEGIN IF DATEPART(weekday, DATEADD(d,

计算两个日期之间的工作日(去掉周末和节假日)

1 package com.utouu.uphone.commons; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.ArrayList; 6 import java.util.Calendar; 7 import java.util.Date; 8 import java.util.Iterator; 9 import java.util.List; 10

用VBA计算两个日期之间的工作日(去掉周末两天)

最近公司HR和Finance想算员工的工作天数,想让我帮忙写些VBA,自己从网上找了下代码,自己再改改,以下来自网络. 计算两个日期之间的工作日,用VBA,因量大,最好用数组做 Sub kk() Dim arr, i&, j&, m& arr = Sheet2.Range("b3:f4") For i = 1 To UBound(arr) m = 0 For j = arr(i, 1) To arr(i, 3) If Weekday(j) <> 1

获取某一个月的全部工作日

1 public static List<Date> getWorkDates(int year, int month) { 2 List<Date> dates = new ArrayList<>(); 3 Calendar cal = Calendar.getInstance(); 4 cal.set(Calendar.YEAR, year); 5 cal.set(Calendar.MONTH, month - 1); 6 cal.set(Calendar.DATE

Week6(10月17日):周末别忘记运动

Part I:提问  =========================== 1.多对多关系的数据实体,如何创建模型类? 已知汽车4S店需开发一个客户关系管理系统(CRM),请为其中的客户和汽车对象建立模型类. 2.已知代码如下 [DatabaseGenerated(DatabaseGeneratedOption.None)] public int CourseID { get; set; } 请问[DatabaseGenerated(DatabaseGeneratedOption.None)]

北京Uber优步司机奖励政策(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

成都Uber优步司机奖励政策(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h