2011-09-17 6 views
-4

정확히 24 시간이 지나면 더 이상 부울 표현식을 true로 반환 할 수 있습니까? 내가 strtotime()을 사용하고PHP의 타임 스탬프 비교

아웃이 두 ​​번 넣어 두의 차이가 86400 때

$time1 = 1316268919; 
$time2 = 1316268898; 
+1

http://stackoverflow.com/search? q = compare + times + php – Fabio

+1

답변은 24 시간 절대 시간 또는 해당 시간대의 24 시간을 알고 싶은지 여부에 달려 있습니다. 'strtotime ('2011-10-30 02:00:00') - strtotime ('2011-10-29 02:00:00');은 유럽/베를린에서 그 날 DST 전환으로 인해 90000 초가됩니다. 'strtotime'은 DST를 인식하기 때문에,'echo strtotime ('2011-10-30 02:00:00') - strtotime ('2011-10-29 02:00:00 +24 hours');'is 0 – Gordon

답변

1

이것은 당신이 무엇을해야한다 :

if (($time1-$time2) == 86400) { 
    // Exactly 24 hours have passed. 
} 
+0

유효한 의견입니다. 문제는 1 년에 두 번만 발생합니다.) (음, DST 관련 의견은 사라졌지만 부분적으로는 정확했습니다.) – jancha

+0

모든 경우에 정답입니다. DST는 계산시 고려할 필요가 없습니다. 질문은 "어제 같은 시간"이 아니라 "24 시간"이었습니다. 따라서 DST 경계에 있다면 오전 12시 (자정)는 오전 1 시부 터 24 시간입니다. 두 시간 사이에 24 시간이 지나면 정답입니다. – ircmaxell

+1

"24 시간"의 정확한 정의에 따라 다릅니다. 정확히 각각 60 분 24 시간을 의미한다면 코드가 정확한 것입니다. 24 시간을 의미하는 경우 DST와 윤초 모두 코드가 올바르지 않습니다. (예를 들어, "매 24 시간마다" "같은 시간에 매일"을 의미하는 경우가 많지만 동일한 것은 아닙니다.) –

0

24 시간은 = 86400sec 때문에, 정확히 24 시간

N.B.입니다 1 년에 두 번씩 해당되는 경우 DST에 문제를 일으킬 수 있습니다.

0

strtotime()은 유닉스 시대 이후의 시간 (초)을 반환합니다. 따라서 시간의 차이를 확인하려면 단순히 다른 것을 빼십시오. 그 차이를 24 시간 (24 * 60 * 60)의 초 수와 비교하십시오.

0
abs($time1 - $time2) === 60 * 60 * 24 

을 복근이 단지의 경우이다; time2는 time1보다 클 수 있습니다.

배의 차이 (분에서 초) (60)과 같다면 * 60 * (시간당 분) * 24 (하루 시간) = 86400, 하루 차이를 거기에