2015-01-22 4 views
0

$user_timestamp에 저장된 특정 타임 스탬프가 있습니다 (예 : 1421942631). 현재 시간 기록은 $current_timestamp에 저장되어 있습니다.타임 스탬프 이후 3 일 이상 지났 으면

이 변수의 타임 스탬프를 현재 타임 스탬프와 비교하여 3 일이 지난지 확인하고 싶습니다. 있다면, 행동을 취하십시오.

기본 if 문에서 어떻게해야합니까?

답변

1

일반적으로 날짜 계산에 DateTime을 사용하는 것이 좋지만 간단하게 유지하려면 strtotime() 인 상대 형식을 사용할 수 있습니다.

if($user_timestamp < strtotime('-3 days')) { 
    // three days ago or more 
} 

그러나 여기에는 완전성을 위해 DateTime 예제가 나와 있습니다.

$userTimestamp = new DateTime('@'.$user_timestamp); 
$threeDaysAgo = new DateTime('-3 days'); 
if ($userTimestamp < $threeDaysAgo) { 
    // three days ago or more 
} 
+0

어떻게 작동하는지 자세히 설명해 주실 수 있습니까? 방금 strtotime() 예제를 테스트했지만 작동하지 않았습니다. '$ user_timestamp'에 타임 스탬프가 저장되어 있음을 참고하십시오. - 편집 : 조건이 잘못되었을 수 있습니다. –

+0

정확합니다. 나는 내 논리를 뒤로했다. 샷을주고 문제가 해결되는지 확인하십시오. –

+0

잘 작동합니다. 내 친구. 마지막 질문이 하나 있습니다. 두 가지 접근 방식 모두 성능면에서 어떤 차이가 있습니까? –

1

변환하거나 다른 기능을 사용할 필요가 없습니다. 3 일 = 259200 초이므로이 작업을 수행해야합니다.

if($user_timestamp < ($current_timestamp-259200)){ 
+0

이것은 실제로 놀랍도록 간단한 접근법이며 마이크로 최적화에 적합합니다. –

+0

가독성을 희생시키면서 발생합니다. 259200은 정확히 무엇을 의미합니까? 가치가 무엇인지 머리 꼭대기에서 알 수있는 사람을 찾기가 어려울 것입니다. –

+0

사실, 나는 그것을 조사해야만했다. 일반적으로 나는 줄을 따라 주석을 포함한다 '// 259200 = 3 days' – Nathan