计算日期范围和给定时间限制内的小时数

取消

可以说我有以下日期范围:

2014-01-10 11:00-2014-01-13 15:00

我也知道我只能计算09:00-16:00之间的小时数,如何使用PHP做到这一点?

上面的日期范围应该给我25个小时(5 + 7 + 7 + 6),但是不确定这样的PHP函数应该看起来如何。

取消

我现在已经提出了一个解决方案,但是如果只是一天,我对我的计算不太满意。这是代码:

$startDate = strtotime("2014-01-22 15:00");
$endDate = strtotime("2014-01-24 18:00");

$time1 = new DateTime(date("H:i", $startDate));
$time2 = new DateTime(date("H:i", $endDate));
$date1 = new DateTime(date("Y-m-d", $startDate));
$date2 = new DateTime(date("Y-m-d", $endDate));

$start = new DateTime("11:00");
$end = new DateTime("18:00");

$maxPerDay = $end->diff($start)->format("%h") != 0 ? $end->diff($start)->format("%h") : 24;
$days = $date2->diff($date1)->format("%a");

$hours = 0; 
//Is it just one day and is time intersecting?
if($days == 0 && ($start <= $time2 && $time1 <= $end)){
    $hours = $maxPerDay;
    if($start < $time1 || $end > $time2){
        if($time1 < $start){
            $hours = $maxPerDay - $time2->diff($end)->format("%h");
        }else if($time2 > $end){
            $hours = $maxPerDay - $time1->diff($start)->format("%h");
        }else{
            $hours = $time1->diff($time2)->format("%h");
        }
    }
}else if($days > 0){
    $firstDay = 0;
    $lastDay = 0;
    if($time1 < $end){
        $firstDay = $time1 < $start ? $maxPerDay : $maxPerDay - $time1->diff($start)->format("%h"); 
    }
    if($time2 > $start){
        $lastDay = $time2 > $end ? $maxPerDay : $maxPerDay - $time2->diff($end)->format("%h");
    }
    $hours = $lastDay + $firstDay + ($days - 1) * $maxPerDay;
}

echo $hours;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算给定时间范围内两个日期时间之间的小时数

来自分类Dev

收集API-PHP-跟踪给定时间范围内的总小时数

来自分类Dev

计算时间范围内的小时数

来自分类Dev

如何在给定时间之前计算小时数

来自分类Dev

Python:计算特定时间段内的小时数

来自分类Dev

利用灵活的日期时间范围计算日期时间之间的小时数

来自分类Dev

Excel 2010:夏令时-计算任何给定日期的时间戳之间的小时数

来自分类Dev

解析日期和时间,try-catch,超出范围的小时数变量

来自分类Dev

从给定的开始结束时间计算每小时时间范围内的发生次数

来自分类Dev

如何使用SQL查询(MySQL)计算时间范围的小时数

来自分类Dev

日期范围的SQL每小时数据计算

来自分类Dev

日期范围的SQL每小时数据计算

来自分类Dev

从 2 个重叠的日期时间范围获取小时数

来自分类Dev

在 Python 中获取日期时间范围之间的小时数

来自分类Dev

使用Redis计算给定时间范围内的共现次数

来自分类Dev

计算在给定时间范围内落入间隔的每个“ x”?

来自分类Dev

SQL 2008-我需要计算给定时间范围内每位员工的行数

来自分类Dev

如何在给定间隔内计算小时数

来自分类常见问题

如何检查给定的小时和分钟(整数)是否在给定的时间范围内?

来自分类Dev

如何计算给定时间hh:mm:ss在24小时内的时间百分比?

来自分类Dev

如何计算给定时间hh:mm:ss在24小时内的时间百分比?

来自分类Dev

Python从日期时间索引中计算每天的小时数

来自分类Dev

日期时间:以天为单位计算小时数

来自分类Dev

记录最少日期的记录并计算特定时间范围内的后续记录

来自分类Dev

如何时间戳范围之间计算(在特定范围内)的小时和分钟的总量

来自分类Dev

查找在给定时间范围内修改的文件

来自分类Dev

给定时间范围内事件的大概计数

来自分类Dev

在日期范围和特定时间范围之间选择

来自分类Dev

在给定的日期范围内,无法使计数行在1小时的时间跨度内工作

Related 相关文章

  1. 1

    计算给定时间范围内两个日期时间之间的小时数

  2. 2

    收集API-PHP-跟踪给定时间范围内的总小时数

  3. 3

    计算时间范围内的小时数

  4. 4

    如何在给定时间之前计算小时数

  5. 5

    Python:计算特定时间段内的小时数

  6. 6

    利用灵活的日期时间范围计算日期时间之间的小时数

  7. 7

    Excel 2010:夏令时-计算任何给定日期的时间戳之间的小时数

  8. 8

    解析日期和时间,try-catch,超出范围的小时数变量

  9. 9

    从给定的开始结束时间计算每小时时间范围内的发生次数

  10. 10

    如何使用SQL查询(MySQL)计算时间范围的小时数

  11. 11

    日期范围的SQL每小时数据计算

  12. 12

    日期范围的SQL每小时数据计算

  13. 13

    从 2 个重叠的日期时间范围获取小时数

  14. 14

    在 Python 中获取日期时间范围之间的小时数

  15. 15

    使用Redis计算给定时间范围内的共现次数

  16. 16

    计算在给定时间范围内落入间隔的每个“ x”?

  17. 17

    SQL 2008-我需要计算给定时间范围内每位员工的行数

  18. 18

    如何在给定间隔内计算小时数

  19. 19

    如何检查给定的小时和分钟(整数)是否在给定的时间范围内?

  20. 20

    如何计算给定时间hh:mm:ss在24小时内的时间百分比?

  21. 21

    如何计算给定时间hh:mm:ss在24小时内的时间百分比?

  22. 22

    Python从日期时间索引中计算每天的小时数

  23. 23

    日期时间:以天为单位计算小时数

  24. 24

    记录最少日期的记录并计算特定时间范围内的后续记录

  25. 25

    如何时间戳范围之间计算(在特定范围内)的小时和分钟的总量

  26. 26

    查找在给定时间范围内修改的文件

  27. 27

    给定时间范围内事件的大概计数

  28. 28

    在日期范围和特定时间范围之间选择

  29. 29

    在给定的日期范围内,无法使计数行在1小时的时间跨度内工作

热门标签

归档