2013-07-30 34 views
0

您好我都存儲在MSSQL數據庫中值時間(7)日期格式

job_start job_end

我想用PHP來制定這兩個時間之間的區別,我有如下因素代碼

$start = $model->job_start; 
$end = $model->job_end; 
$diff = date("h:i:s", strtotime($end) - strtotime($start)) ; 
echo $diff ; 

但是輸出是

03:06:00 

與其

00:06:00 

通過區別爲6分鐘(360秒)時,誰能幫助得到這個正確的格式,所以我可以將它保存的方式嗎?

此問題已被標記爲重複,但它是一個不同的問題,因爲這解決了使用日期函數時的特定時區問題。並已被如此回答。

編輯

我已標記的代碼回答,但是我問我想如下

$start = $model->job_start; 
$end = $model->job_end; 

$total = $model->customer->total_time; 
//adding time difference to total time used for that customer 
$dt = strtotime($total) + strtotime($end) - strtotime($start); 
$hours = floor($dt/3600); 
$minutes = floor($dt/60) - $hours * 60; 
$seconds = $dt - $hours * 3600 - $minutes * 60; 


// Padded values 
$hours = str_pad($hours, 2, STR_PAD_LEFT, '0'); 
$minutes = str_pad($minutes, 2, STR_PAD_LEFT, '0'); 
$seconds = str_pad($seconds, 2, STR_PAD_LEFT, '0'); 
$output = "{$hours}:{$minutes}:{$seconds}" ; 

//display 
echo '<br> Start time : '. $start; 
echo '<br> End time : '. $end; 
echo '<br> total time + time difference : '. $output; 
echo '<br> Total time for Customer : '. CHtml::encode($model->customer->total_time); 

我想補充的總時間差增加額外的計算問題到總時間變量 但是當輸出回顯時,我得到這個顯示

Start time : 11:45:00.0000000 
End time : 12:45:00.0000000 
total time + time difference : 382015:00:00 
Total time for Customer : 09:00:00.0000000 

注意,總時間+時間差有額外的數字之前,它可能是一個簡單的錯誤在我的部分,但我看不到它,任何幫助,將不勝感激

+3

'$ end'和'$ start'包含什麼? –

+0

向我們展示一些數據示例,如$ start和$ end值 – Hackerman

+1

昨天你是否問過同樣的問題?如果是這樣,你爲什麼再問一次? – sgroves

回答

1

首先,date自Unix時代(1970-01-01 00:00:00)開始算起,所以你看到的奇怪的三小時差異就是你的時區。您需要分別解析小時,分鐘和秒鐘。

<?php 
$end = '2013-07-30 23:27:00'; 
$start = '2013-07-30 21:23:56'; 

$dt = strtotime($end) - strtotime($start); 
$hours = floor($dt/3600); 
$minutes = floor($dt/60) - $hours * 60; 
$seconds = $dt - $hours * 3600 - $minutes * 60; 

// Padded values 
$hours = str_pad($hours, 2, STR_PAD_LEFT, '0'); 
$minutes = str_pad($minutes, 2, STR_PAD_LEFT, '0'); 
$seconds = str_pad($seconds, 2, STR_PAD_LEFT, '0'); 

$output = "{$hours}:{$minutes}:{$seconds}"; 
+0

如果你正在運行5.3或更高版本,你也可以嘗試date_diff函數:http://www.php。net/manual/en/datetime.diff.php(沒有使用過,但看起來好像會完成這項工作) – sgroves

+0

工作正常,謝謝 – user1652319

+0

我想用你已經顯示的代碼執行額外的計算,它是在回顯時間字符串前顯示額外的數字,請參閱已編輯的問題 – user1652319

4

爲什麼在數據庫中沒有做到這一點

SELECT TIMESTAMPDIFF(SECOND, job_start, job_end); 

它的速度更快,其他人更清楚您正在嘗試做什麼。

+0

如果這返回一個解析的字符串(似乎是首選),這肯定是要走的路。然而,在我看來,這個問題只是使用'date'來返回值與時區。 – adrenalin