我有两个时间戳,可以是任何日期和时间。我想获取星期天的所有分钟。为了更好地理解:开始时间戳和结束时间戳表示员工开始工作和完成工作的日期和时间,我想得到员工在星期天工作的总分钟数。
下面是我的代码:
function get_sunday_hours_from_timestamps($startTimestamp, $endTimestamp) {
$start = new DateTime();
$start->setTimestamp($startTimestamp);
$end = new DateTime();
$end->setTimestamp($endTimestamp);
$workedMinutes = 0;
$current = clone $start;
while ($current <= $end) {
$next = clone $current;
$next->modify('next day');
if ($current->format('w') == 0) {
$dayStart = ($current < $start) ? $start : $current;
$dayEnd = ($next > $end) ? $end : $next;
$diff = $dayEnd->diff($dayStart);
$minutes = $diff->days * 1440 + $diff->h * 60 + $diff->i;
$workedMinutes += $minutes;
}
$current = $next;
}
return $workedMinutes / 60;
// return $workedMinutes;
}
2条答案
按热度按时间wwodge7n1#
谢谢你的投入。我能够解决这个问题。希望这对其他人有帮助。
bmvo0sr52#
一个非常简单的解决问题的方法(计算给定时间段内的星期天分钟数)可能是:反复检查你时间段内的每一分钟,检查一下那一分钟是否是星期天,然后计算一下。
在PHP中,可能类似于:
但是我相信你可以对这个算法进行很多优化,比如你可以先检查一下给定的时间段是否包括星期天...