2015-01-02 31 views
0

在後臺運行腳本來檢查某人是否可用。這個腳本然後在數據庫中插入一個值。我無法控制這個腳本。輸出如下:如何將分鐘與時間段相結合

12:01:00 
12:02:00 
12:03:00 
12:10:00 
12:11:00 
12:12:00 
12:13:00 
12:14:00 
12:15:00 

現在我使用PHP,所以我將結束連續行的第一個和最後一個數據需要這組數據。因此,在這種情況下,我需要的數據是:

12:01:00 
12:03:00 
12:10:00 
12:15:00 

我搜索這個論壇和谷歌,但也許我的英語不夠好,找到了答案。我嘗試了各種想法(比如將時間與前一次進行比較,但每次遇到意外或不工作的結果)。

+3

您的問題需要一些更清晰的分組部分 –

回答

0
  1. 讀取時間字符串並將其設置爲時間段的開始和結束。
  2. 閱讀下一次字符串。
  3. 計算時間串的差異,並且如果它小於00:01:00延長的時間段。如果超過1分鐘,則打印時間段並開始新的時間段。進入2

當您使用mtkime()和日期(),你應該叫

date_default_timezone_set('UTC'); 

下面是一個代碼示例。數據作爲字符串存儲在數組中。

date_default_timezone_set('UTC'); 

$arr = array(
    '12:01:00', 
    '12:02:00', 
    '12:03:00', 
    '12:10:00', 
    '12:11:00', 
    '12:12:00', 
    '12:13:00', 
    '12:14:00', 
    '12:15:00' 
); 

// Start of code sample 
$firsttime = true; 
$start_time = ''; 
$end_time = ''; 
foreach ($arr as $time) { 
    if ($firsttime === true) { // start of a new time range 
     // above test can be changed to $start_time === '' && $end_time === '' 
     $firsttime = false; 
     $start_time = $time; 
     $end_time = $time; 
    } else { 
     $diff = diff_time($end_time, $time); 
     // insert error check here 
     if ($diff <= '00:01:00') { // consecutive 
      $end_time = $time; // update end of the time range 
     } else { // end of the time range 
      echo $start_time, '<br />'; 
      echo $end_time, '<br />'; 
      $start_time = $time; 
      $end_time = $time; 
     } 
    } 
} 
if ($start_time !== '' && $end_time !== '') { 
    echo $start_time, '<br />'; 
    echo $end_time, '<br />'; 
} 
echo 'End<hr />'; 

function diff_time($from_time, $to_time) { 
    if (preg_match('/([0-9]+):([0-9]+):([0-9]+)/', $from_time, $captured)) { 
     $from = mktime($captured[1], $captured[2], $captured[3], 1, 1, 2000); 
    } else { 
     return false; 
    } 
    if (preg_match('/([0-9]+):([0-9]+):([0-9]+)/', $to_time, $captured)) { 
     $to = mktime($captured[1], $captured[2], $captured[3], 1, 1, 2000); 
    } else { 
     return false; 
    } 
    if ($from > $to) { 
     return date('-H:i:s', $from - $to); 
    } else { 
     return date('H:i:s', $to - $from); 
    } 
+0

謝謝!完美的作品。 –