0

指定された日時の値が時間の範囲内にあるかどうかを判断し、$actual_dateOut と $range_dateOut の間の時差をデータベースに挿入したいと考えていました。

データの例:

$actual_dateIn  = "2013-06-01 06:54:00" 
$actual_dateOut = "2013-06-01 19:20:00"

$range_dateIn     = "08:00:00"
$range_dateOut    = "18:00:00"

これが私がこれまでに行ったことです:

 date_default_timezone_set("UTC");
 $dateIn  =  date($actual_dateIn, time());
 $dateOut =  date($actual_dateOut, time());


 if($dateIn <= strtotime($range_dateIn) && $dateOut <= strtotime($range_dateOut))
 {
    $ot = $range_dateOut->diff($strtotime($actual_dateOut));
    $hours = $ot->h;


    $sql_insert = "INSERT INTO tbl_ot (id, fDate, shiftCode, ot ) 
                   VALUES ('$id', '$actual_dateIn', '$shift', '$hours')";

    $result_ot = mysql_query($sql_insert);  
 }

ただし、$actual_dateOut と $range_dateOut の差は計算されません。

4

2 に答える 2

0

次の方法で実行できます (チェック済み): 注意: 1. このコードでは $shift は空です。2. time_difference を秒単位から時間単位に変換する方法を決定する必要があります

$actual_dateIn  = "2013-06-01 06:54:00";
$actual_in_arr = explode(' ', $actual_dateIn);

$actual_dateOut = "2013-06-01 17:20:00";
$actual_out_arr = explode(' ', $actual_dateOut);

$actual_in_time = strtotime(date('Y-m-d').' '.$actual_in_arr[1]);
$actual_out_time = strtotime(date('Y-m-d').' '.$actual_out_arr[1]);

$range_dateIn     = "08:00:00";
$range_dateOut    = "18:00:00";
$range_in_time = strtotime(date('Y-m-d').' '.$range_dateIn);
$range_out_time = strtotime(date('Y-m-d').' '.$range_dateOut);

 if($actual_in_time <= $range_in_time && $actual_out_time <= $range_out_time)
 {   
    $time_difference = $range_out_time - $actual_out_time;
    $hours = round( $time_difference/60/60, 2 );
    $sql_insert = "INSERT INTO tbl_ot (id, fDate, shiftCode, ot ) 
                   VALUES ('$id', '$actual_dateIn', '$shift', '$hours')";
    $result_ot = mysql_query($sql_insert);  
 }
于 2013-06-19T07:37:37.590 に答える