当前位置: 首页 > 面试题库 >

没有周末的日差

傅边浩
2023-03-14
问题内容

我想计算用户输入的总日差

例如,当用户输入

start_date = 2012-09-06end-date = 2012-09-11

现在,我正在使用此代码查找差异

$count = abs(strtotime($start_date) - strtotime($end_date));
$day   = $count+86400;
$total = floor($day/(60*60*24));

总计的结果为6。但是问题是我不想包括周末(星期六和星期日)的日子

2012-09-06
2012-09-07
2012-09-08 Saturday
2012-09-09 Sunday
2012-09-10
2012-09-11

所以结果将是4

-—更新-

我有一个包含日期的表,该表的名称是假期

例如表格包含 2012-09-07

因此,总天数为3,因为它没有计算假期日期

我该如何将输入中的日期等同于表中的日期?


问题答案:

很容易与我的最爱DateTimeDateIntervalDatePeriod

$start = new DateTime('2012-09-06');
$end = new DateTime('2012-09-11');
// otherwise the  end date is excluded (bug?)
$end->modify('+1 day');

$interval = $end->diff($start);

// total days
$days = $interval->days;

// create an iterateable period of date (P1D equates to 1 day)
$period = new DatePeriod($start, new DateInterval('P1D'), $end);

// best stored as array, so you can add more than one
$holidays = array('2012-09-07');

foreach($period as $dt) {
    $curr = $dt->format('D');

    // substract if Saturday or Sunday
    if ($curr == 'Sat' || $curr == 'Sun') {
        $days--;
    }

    // (optional) for the updated question
    elseif (in_array($dt->format('Y-m-d'), $holidays)) {
        $days--;
    }
}


echo $days; // 4


 类似资料:
  • 问题内容: 我的数据库中有一个date_created字段: 有什么办法可以按周末/工作日筛选date_created?我知道python的date.weekday()根据星期几返回0-6,所以我想使用类似以下内容: 问题答案: Django附带了一个工作日字段查询。 http://docs.djangoproject.com/en/dev/ref/models/querysets/#week-d

  • 问题内容: 该函数似乎只返回false。你们有没有一样?我敢肯定,我正在忽略一些东西,但是,新鲜的眼睛和所有这些… 我使用以下命令调用该函数: 问题答案: 如果您的PHP> = 5.1: 除此以外:

  • 问题内容: 嗨,我正在使用jquery-uidatepicker选择date和date.js来查找两个日期之间的差异。 现在的问题是我想从计算中排除周末(周六和周日)。我该怎么办? 例如,用户选择开始日期(13/8/2010)和结束日期(16/8/2010)。由于14/8/2010和15/8/2010是工作日,而不是总共4天,所以我希望只有2天。 这是即时消息正在使用的代码: 问题答案: 也许其他

  • 问题内容: 我需要找到给定月份和年份的所有周末日期。 例如:对于01(月),2010(年),输出应为:所有周末日期:2,3,9,10,16,17,23,24,30,31。 问题答案: 这是带有描述步骤的注释的粗略版本:

  • 问题内容: 我以前曾发布过有关此内容的文章,这有助于我获得以下SQL: 这给了我以下结果: 我在尝试实现以下格式时遇到了一些麻烦: 任何人都可以提供帮助吗?我将不胜感激… 问题答案: SELECT fname, MONTH(eventDate), SUM(IF(WEEKDAY(eventDate) < 5,1,0)) AS WeekdayCount, SUM(IF(WEEKDAY(eventDat

  • 问题内容: 我有一个工作单模型,其中包含何时需要工作单的字段。为了获得工作单的列表,以及那些需要提前完成的工作单,我这样做: 这很好用,但是只有在该字段中确实有一个值的情况下才可以。如果没有必需的日期,则值为。然后,工作单列表的所有顶部都带有,然后按正确的顺序排列其余的工作单。 如何在底部找到? 问题答案: 你可能需要在order_by部分的date_is_null之前加一个-,但这是控制行为的方