2014-03-13 5 views
0

오늘 몇 가지 질문에 대해 몇 가지 문제를 토대로 몇 가지 DateTime 값 사이의 평균 및 총 지속 시간을 포함 시켰습니다. 내가 총 지속 시간을 저장하기 위해 다음과 같이 DateTime 개체 정의 사용하는 것이이 기간을 계산에서는, 이전에 추천되었다 :DateTime을 사용하는 총 재생 시간

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

내가 가진 문제는 - 그것은 총 지속 시간이이 방법을 계산 실제로 최고? 여러 이벤트의 총 지속 시간을 계산합니까?

EDIT : 시간이 추가되지는 date_diff() 의해 산출 기간이므로, 그들은 (쉽게 DateTime 객체에 추가 될 수있다) DateInterval 객체이다.

+0

필자는 [순수한 SQL 솔루션으로 다른 질문에 대답] (http://stackoverflow.com/a/22390868/358679)의 자유를 얻었습니다. IMHO가 제공하지 않는 PHP 코드가 훨씬 더 적합합니다. 필요하다. – Wrikken

+0

궁극적으로, 더 좋은 방법은 SQL에서 시간을 합산하고 PHP에 합계를 저장하는 것입니다. (이 질문에 대한 답변으로) – muttley91

+0

글쎄, 이것은 현재의 질문에 대한 답이 아니며, 당신이 풀려고하는 실제 문제에 대한 해답입니다. 그러나 그것은 제가 취할 경로입니다. 내 의견으로는 'DateTime'개체는 단지 시간 차이에별로 좋지 않습니다. 원하지 않는 날짜 문제, DST 문제, 한밤중에 일어나는 문제, 평균 시간뿐입니다. 현재 질문에 대한 답을 원한다면 정수와 같은 초로 계산하고 몇 가지 수학 형식으로 계산하면됩니다 ('$ hours = floor ($ seconds/3600); $ seconds = $ seconds % 3600 ; $ seconds : $ seconds : $ seconds = 60 seconds; $ time : $ minutes : $ seconds "; – Wrikken

답변

1

내가 지금까지 수집 할 수 있었던 것으로부터, 이런 종류의 일을하는 "더 나은"2 가지 방법이있는 것처럼 보입니다.

  1. 여전히 DateTime 객체를 사용하는 동안, 초에 최대 시간을 모두 추가 할 수 있습니다. 이것은 잠재적 인 DateTime 버그/이상한 행동을 피하면서, 데이터 계산에 간단한 정수 덧셈/뺄셈/무엇이든 허용합니다. 결국 출력을 위해 초를 DateTime 형식으로 변환하십시오.

  2. 데이터베이스에서 당기기 (당분간) SUM, TIME_DIFF 등의 SQL의 사용 가능한 기능을 사용하여 데이터베이스에서 직접 계산할 수 있습니다. 거기에서 PHP의 DateTime 객체로 객체를 가져오고 그 객체를 전혀 수정하지 않고 결과를 출력합니다. 23 시간이 넘는 문제를 해결했습니다 (PHP의 DateTime 개체를 추가하면 자정까지 되돌아갑니다).

다른 제안 사항에 대해서는 명확하게 공개되어 있습니다.