2012-06-21 2 views
-1

인 경우 두 시간 (Cron 작업은 1 시간, 매시간) 사이의 시간을 계산하고 싶습니다.계산 PHP를 사용하는 시간이 24 시간 미만이거나

EG :

오후 2시 18분에 20/06/2012 나는이를 계산합니다 어떻게 21/06/2012 * 크론 작업이 실행, 24 시간 이상

오후 3 PHP는 나중에 개발할 작업을 수행합니다.

스크립트 나는 시도했습니다

define("SECONDS_PER_HOUR", 60*60); 
date_default_timezone_set('UTC'); 

$result = mysql_query("SELECT * FROM tickets") or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 
    // Calculate the start time 
    $str = $row['openTime'] . " " . $row['openDate']; 

    $startdatetime = strtotime($str); 

    $enddatetime = time(); 

    // calculate the difference in seconds. 

    $difference = $enddatetime - $startdatetime; 

    $hoursDiff = $difference/SECONDS_PER_HOUR; 

    $minutesDiffRemainder = $difference % SECONDS_PER_HOUR; 

    echo $row['ticketID'] . ": " . $hoursDiff . "h " . $minutesDiffRemainder . "m<br />"; 
} 
+2

시도해 보셨습니까? – lanzz

+0

최종 결과 : MFT-252,224 : 74.5166666667h의 1,860m MFT-768,337 : 18.4333333333h 1,560m MFT-848,286 : -7.81666666667h -2940m MFT-70960 : -0.0075h -27m MFT-543,912 : -0.0075h -27m MFT-512905 : -0.0075h -27m MFT-496896 : -0.0075h -27m MFT-879190 : -0.0075h -27m – user1471191

+0

Kris, 나는 당신의 코드를 조금 편집했다. 설정 상으로는 초기에'date_default_timezone_set'을 사용했다. . 그런 다음 먼저 문자열을 형식화 한 다음'strtotime'을 실행하십시오. 그리고 두 번째로'time()'을 사용하는 것만으로도 충분할 수있었습니다. 이제 남아있는 유일한 것은 약간의 검색이 그것을 빨리 밝혀 내야하는지를 묻는 2 개의 UNIX 타임 스탬프 사이의 차이를 얻는 것입니다. – hakre

답변

0

당신은 실제로 당신이 무엇을 필요로하고 모든 데이터를 가져 오지 않는 쿼리를하고 PHP의 비교를하고있는 것으로 간주 적이 있습니까? 당신은 당신의 코드를 읽는에서

SELECT * from TICKETS WHERE DATE_ADD(open time, INTERVAL 24 HOUR) > CURTIME();

을 할 수있는, 나는 당신이 opentime 필드가 날짜와 시간을 모두 포함, 소인입니다 만들 필요가 가정 것입니다. 그러나 어쨌든 그것은 대부분의 경우 현명한 선택입니다.

+0

SELECT * 어디에서 DATE_ADD (영업 시간, INTERVAL 24 시간)> CURTIME(); 이것을 사용하면 date()가있는 것처럼 입력 내용을 변경하거나 MySQL에서 자동으로 수행하도록해야합니까? – user1471191

+0

글쎄, 응용 프로그램에서 날짜를 설정하지 않는 것이 좋다면 삽입시 CURTIME() (또는 NOW())를 사용할 수 있습니다. 이것은 세부 사항들을 처리 할 것입니다; 당신은 컬럼을 기본값으로 가질 수도 있습니다. 이것은 동일한 시스템의 타임 스탬프를 비교하는 장점이 있습니다. 데이터베이스를 사용할 때 항상 작동합니다. 관련 시스템의 시간은 비슷하지만 시간이 지날수록 시간이 흐를 수 있습니다. 그런 다음 24 시간을 '오른쪽'값 (타임 스탬프)과 비교합니다. –