현재 날짜 / 시간이 설정된 날짜 / 시간을 지난 지 어떻게 확인할 수 있습니까?


115

현재 날짜 / 시간이 지난 지 확인하는 스크립트를 작성하려고합니다. 05/15/2010 at 4PM

이 검사를 수행하기 위해 PHP의 date () 함수를 어떻게 사용할 수 있습니까?

답변:


228

PHP> = 5.2.2부터 DateTime다음과 같이 클래스를 사용할 수 있습니다 .

if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
    # current time is greater than 2010-05-15 16:00:00
    # in other words, 2010-05-15 16:00:00 has passed
}

DateTime 생성자에 전달 된 문자열은 이러한 규칙에 따라 구문 분석 됩니다 .


timestrtotime기능 을 사용하는 것도 가능 합니다. 원래 답변보기 .


6
타임 스탬프에는 몇 가지 제한 사항이 있으며 일부 버그도 있습니다. 예를 들어 타임 스탬프는 1970 년 이전과 2038 년 이후의 날짜를 처리 할 수 ​​없습니다 (Ivar Koster의 답변 참조)
Steel Brain

1
매개 변수가없는 new DateTime ()이 남용되는 경우가 종종 있습니다. UTC 날짜를 사용하는 경우 (필요한대로) new DateTime ( "now", new DateTimeZone ( 'UTC'))을 선호합니다. 이렇게하면 앱이 날짜에서 오해 할 수있는 버그를 방지 할 수 있습니다. 난 ... 당신이 당신의 실행 과정에서 다른 곳에서, 함수의 정적 변수에 클래스의 정적을 보관하거나 조언
Loenix

이미 DateTime 객체가 있고 제안한대로 DateTime 생성자에 객체를 전달할 수 없기 때문에 이것이 과거인지 알고 싶다면 어떻게해야합니까? getTimestamp ()를 사용하고 time ()과 비교해야합니까? @Salman
user4271704

@ user4271704 new DateTime('2010-05-15')예를 들어 이전에 초기화 한 DateTime 개체가 될 수 있습니다.
Salman A

$objectDateTime 객체 라고 가정하면 if (new DateTime() > $object) {}잘못 작동합니다. 그러나 if (time() > $bject->getTimeStamp()) {}올바르게 작동합니다. @Salman
user4271704

77

비교 연산자를위한 함수를 구현하는 DateTime 클래스 도 있습니다 .

// $now = new DateTime();
$dtA = new DateTime('05/14/2010 3:00PM');
$dtB = new DateTime('05/14/2010 4:00PM');

if ( $dtA > $dtB ) {
  echo 'dtA > dtB';
}
else {
  echo 'dtA <= dtB';
}

1
이를 위해 어떤 기능을 구현합니까?
still_dreaming_1

6

strtotime설정된 날짜 / 시간을 타임 스탬프로 변환하려면 PHP의 -기능을 확인하십시오 . http://php.net/manual/en/function.strtotime.php

strtotime날짜 / 시간 형식을 올바르게 처리 할 수없는 경우 ( "오후 4시"는 작동하지만 "오후 4시"는 작동하지 않음), 예 substr를 들어 형식을 구문 분석 / 수정하고 타임 스탬프를 검색 하는 데 문자열 함수를 사용해야합니다. 다른 기능, 예 :mktime .

그런 다음 결과 타임 스탬프를 현재 날짜 / 시간 (if ($calulated_timestamp > time()) { /* date in the future */ } ) 설정된 날짜 / 시간이 과거인지 미래인지 확인합니다.

날짜 / 시간 함수에 대한 PHP 문서를 읽고 문제가 발생하면 소스 코드를 가지고 여기로 돌아 오는 것이 좋습니다.


바르 코스터의 답변을 참조
스틸 뇌

1
date_default_timezone_set('Asia/Kolkata');

$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
    echo "active";exit;
}else{
    echo "inactive";exit;
}

확실히 이것은 $myDate과 같게 작동하지 않을 것 string (0) ""입니다.
Nikola Petkanski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.