2014-03-13 48 views
0

我今天基於一些問題,我已經涉及幾個DateTime值之間的平均和總持續時間的問題。在計算此期間,有人曾建議我用一個DateTime對象定義如下存儲總時長:總持續時間使用DateTime

$totalTime = new DateTime("@0"); 

我的問題是 - 它實際上是最好這樣算總的持續時間?它是否會計算幾個事件的總持續時間?

編輯:添加的時間是由date_diff()計算的持續時間,因此它們是DateInterval對象(可以很容易地將其添加到DateTime對象)。

+0

我冒昧地[用純粹的SQL解決方案回答了其他問題](http://stackoverflow.com/a/22390868/358679),它似乎更適合於那些恕我直言, t需要。 – Wrikken

+0

因此最終,更好的方法是總結SQL中的時間,而不用費心將其存儲在PHP中? (作爲這個問題的答案) – muttley91

+0

好吧,這不是對你目前的問題的回答,它是你試圖解決的實際問題的答案。但這是我要走的路線。在我看來,'DateTIme'對象在時間差異方面並不十分出色:您不想要的日期問題,DST問題,午夜時間,僅僅是平均時間。如果你想回答你當前的問題:我只是用整數等秒來計算它,並用一些數學格式('$ hours = floor($ seconds/3600); $ seconds = $ seconds%3600 ; $ minutes = floor($ seconds/60); $ seconds = $ seconds%60; echo「$ hour:$ minutes:$ seconds」;' – Wrikken

回答

1

從我迄今爲止能夠收集到的信息來看,似乎有兩種「更好」的方法來做這種事情。

  1. 雖然仍然使用DateTime對象,但將所有時間都加上秒。這允許簡單的整數加/減/無論用於計數數據,避免潛在的日期時間錯誤/奇怪的行爲。最後,只需將秒數轉換爲DateTime格式即可輸出。

  2. 如果從數據庫中提取數據(如我),只需使用SQL的SUM,TIME_DIFF等可用功能直接從數據庫中進行計算。從那裏,你將它拉入到一個在PHP中的DateTime對象中,並且根本不需要修改那個對象,輸出你的結果。這解決了我自己的超過23小時的問題(如果在PHP中添加DateTime對象,將會返回到午夜)。

但是,我絕對願意接受其他建議。

相關問題