web-dev-qa-db-ja.com

現在の日付/時刻が設定された日付/時刻を過ぎているかどうかを確認するにはどうすればよいですか?

現在の日付/時刻が05/15/2010 at 4PMを過ぎているかどうかを確認するスクリプトを作成しようとしています

PHPのdate()関数を使用してこのチェックを実行するにはどうすればよいですか?

105
dave

PHP> = 5.2.0以降では、 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コンストラクター に渡された文字列は解析されます これらのルールに従って


timeおよびstrtotime関数を使用することもできます。 元の回答を参照

207
Salman A

比較演算子用の関数を実装する 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';
}
77
VolkerK

DateTimeオブジェクトの範囲は、過去の約2,920億年から未来までです。タイムスタンプ関数には制限があります(正しく覚えていれば1970年から2038年まで)。

7
Ivar Koster

PHPのstrtotime- functionをチェックして、設定した日付/時刻をタイムスタンプに変換します。 http://php.net/manual/en/function.strtotime.php

strtotimeが日付/時刻形式を正しく処理できない場合(「4:00 PM」はおそらく機能するが、「4PM」では機能しない)、文字列関数を使用する必要があります。 substrは、形式を解析/修正し、別の関数を介してタイムスタンプを取得します。 mktime

次に、結果のタイムスタンプを現在の日付/時刻(if ($calulated_timestamp > time()) { /* date in the future */ })と比較して、設定された日付/時刻が過去か未来かを確認します。

日付/時刻関数に関するPHP-docを読んで、行き詰まったらソースコードの一部をここに戻すことをお勧めします。

6
Select0r

この日付の比較に問題があり、調整が必要です

function getDatetimeNow() {
  $tz_object = new DateTimeZone('Europe/Belgrade');
  $datetime = new DateTime();
  $datetime->setTimezone($tz_object);
  return $datetime->format('Y\-m\-d\ h:i:s');
}

$currentDate = getDatetimeNow();

$dtA = new DateTime($currentDate);
$dtB = new DateTime($date);

if ( $dtA > $dtB ) {
  $active = 0;
  return $active;
}
else {
  $active = 1;
  return $active;
}
1
Miomir Dancevic
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;
}