PHP:获取给定月份的工作日数

Posted

技术标签:

【中文标题】PHP:获取给定月份的工作日数【英文标题】:PHP: getting weekdays numbers of a given month 【发布时间】:2012-09-20 11:04:05 【问题描述】:

给定一个月份和一个工作日,我需要构建一个函数来检索所有星期一、星期二、星期三、星期四和星期五的天数。

假设我给这个月的函数,2012 年 9 月和工作日编号 1。该函数应该检索 2012 年 9 月的所有星期一,它们是:3、10、17 和 24

请注意,对我来说,第 1 个工作日是星期一,第 2 个是星期二,第 3 个是星期三,第 4 个是星期四,第 5 个是星期五。

到目前为止,我已经完成了:根据今天的日期获取一周的第一天(我在下面发布了函数)。但是我不知道如何以简单的方式从这里开始,我已经做了很多小时,我怀疑有更好的方法来做到这一点。你能告诉我怎么做吗?

  function getFirstDayOfWeek($date) 
    $getdate = getdate($date);

    // How many days ahead monday are we?
    switch ( $getdate['wday'] ) 
        case 0: // we are on sunday
            $days = 6;
            break;

        default: // any other day
            $days = $getdate['wday']-1;
            break;
    

    $seconds = $days*24*60*60;
    $monday = date($getdate[0])-$seconds;

    return $monday;

非常感谢

【问题讨论】:

【参考方案1】:

不是很聪明,但对你有用:

// sept. 2012
$month = 9;

// loop through month days
for ($i = 1; $i <= 31; $i++) 

    // given month timestamp
    $timestamp = mktime(0, 0, 0, $month, $i, 2012);

    // to be sure we have not gone to the next month
    if (date("n", $timestamp) == $month) 

        // current day in the loop
        $day = date("N", $timestamp);

        // if this is between 1 to 5, weekdays, 1 = Monday, 5 = Friday
        if ($day == 1 OR $day <= 5) 

            // write it down now
            $days[$day][] = date("j", $timestamp);
        
    


// to see if it works :)
print_r($days);

【讨论】:

以上是关于PHP:获取给定月份的工作日数的主要内容,如果未能解决你的问题,请参考以下文章

绘制 X 轴具有月份名称的一年的每日数据

Luxon js从工作日数中获取日期

Access 2010 计算工作日数

php 根据给定的年份和月份获取该年份该月份的起始和结束时间

在php中获取给定月份和年份的开始和结束unix时间戳

oracle: 给定起始日期,按月份统计两个日期间每个月份的工作日(非周六周天)的天数,谢谢