3

このコードの使用:PHPで2つの日付の間の時間数を計算する2つのタイムスタンプの間の時間数を計算したいと思います。

今必要なのは、週末の時間をこのカウントから除外できるようにすることです。

たとえば、次の2つのタイムスタンプの場合、時間数は72時間ではなく24時間になると思います。

$datetime1 = "2012-07-20 12:00:00";
$datetime2 = "2012-07-23 12:00:00";
4

1 に答える 1

6

以下のコードが機能するはずです。$datetime1は常に$datetime2未満であると想定しています。

$datetime1 = "2012-07-20 12:00:00"; 
$datetime2 = "2012-07-23 12:00:00";

$timestamp1 = strtotime($datetime1);
$timestamp2 = strtotime($datetime2);

$weekend = array(0, 6);

if(in_array(date("w", $timestamp1), $weekend) || in_array(date("w", $timestamp2), $weekend))
{
    //one of the dates is weekend, return 0?
    return 0;
}

$diff = $timestamp2 - $timestamp1;
$one_day = 60 * 60 * 24; //number of seconds in the day

if($diff < $one_day)
{
    return floor($diff / 3600);
}

$days_between = floor($diff / $one_day);
$remove_days  = 0;

for($i = 1; $i <= $days_between; $i++)
{
   $next_day = $timestamp1 + ($i * $one_day);
   if(in_array(date("w", $next_day), $weekend))
   {
      $remove_days++; 
   }
}

return floor(($diff - ($remove_days * $one_day)) / 3600);
于 2012-07-26T11:36:49.617 に答える