web-dev-qa-db-ja.com

PHPで2つの日付を比較するにはどうすればよいですか?

PHPで2つの日付を比較するにはどうすればよいですか?

データベースでは、日付は2011-10-2のようになります。

今日の日付をデータベースの日付と比較して、どちらが大きいかを確認したい場合、どうすればよいですか?

これを試した

$today = date("Y-m-d");
$expire = $row->expireDate //from db

if($today < $expireDate) { //do something; }

しかし、実際にはそのようには機能しません。それを行う別の方法は何ですか?

更新:私はこの投稿がちょっと古いことを知っていますが、カーボンに言及したかったです。これはlaravelで使用されるクラスですが、古典的なphpで使用でき、日付で不思議です。確認してください: Carbon

117
Sarmen B.

データベースでは、日付は次のようになります2011-10-2

YYYY-MM-DDに保存すると、「1」>「0」などのため、文字列比較が機能します。

75
Matthew

すべての日付が1970年1月1日以降である場合、次のようなものを使用できます。

$today = date("Y-m-d");
$expire = $row->expireDate; //from database

$today_time = strtotime($today);
$expire_time = strtotime($expire);

if ($expire_time < $today_time) { /* do Something */ }

PHP 5> = 5.2.0を使用している場合、DateTimeクラスを使用できます。

$today_dt = new DateTime($today);
$expire_dt = new DateTime($expire);

if ($expire_dt < $today_dt) { /* Do something */ }

またはこれらの線に沿って何か。

205
Hugo Peixoto

すでに与えられた答えを補完するために、次の例を参照してください。

$today = new DateTime('');
$expireDate = new DateTime($row->expireDate); //from database



if($today->format("Y-m-d") < $expireDate->format("Y-m-d")) { 
    //do something; 
}

更新:または単純にold-schoolを使用 date() 関数:

if(date('Y-m-d') < date('Y-m-d', strtotime($expire_date))){
    //echo not yet expired! 
}   
20
d.raev

私はPHPでこれをしません。データベースは、今日が何曜日であるかを知っている必要があります(たとえば、MySQL-> NOW()を使用)

SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
6
Dr.Molle
$today = date('Y-m-d');//Y-m-d H:i:s
$expireDate = new DateTime($row->expireDate);// From db 
$date1=date_create($today);
$date2=date_create($expireDate->format('Y-m-d'));
$diff=date_diff($date1,$date2);

//echo $timeDiff;
if($diff->days >= 30){
    echo "Expired.";
}else{
    echo "Not expired.";
}
4
Atif Mahmood
$today_date=date("Y-m-d");
$entered_date=$_POST['date'];
$dateTimestamp1 = strtotime($today_date);
$dateTimestamp2 = strtotime($entered_date);
$diff= $dateTimestamp1-$dateTimestamp2;
//echo $diff;
if ($diff<=0)
   {
     echo "Enter a valid date";
   }
2
Shruthi reddy

2つの日付の差を分単位で取得する方法を次に示します。

// set dates
$date_compare1= date("d-m-Y h:i:s a", strtotime($date1));
// date now
$date_compare2= date("d-m-Y h:i:s a", strtotime($date2));

// calculate the difference
$difference = strtotime($date_compare1) - strtotime($date_compare2);
$difference_in_minutes = $difference / 60;

echo $difference_in_minutes;
2
Syno

私もその問題を抱えていました。

$today = date("Ymd");
$expire = str_replace('-', '', $row->expireDate); //from db

if(($today - $expire) > $NUMBER_OF_DAYS) 
{ 
    //do something; 
}
1
PiotrK

単純なPHPを使用して、日付を比較できます。

$date = new simpleDate();
echo $date->now()->compare($expire_date)->isBeforeOrEqual();

これにより、trueまたはfalseが得られます。

その他の例については、チュートリアルを確認してください。 ここをクリック してください。

1
isa

簡単に確認できます。

if ($startdate < $date) {// do something} 
if ($startdate > $date) {// do something}

しかし、両方の日付は同じ形式である必要があります

Y-m-dまたはd-m-Y

等.

0
sanjyot

ブログで答えを見つけました。それは次のように簡単です。

strtotime(date("Y"."-01-01")) -strtotime($newdate))/86400

そして、2つの日付の間の日数を取得します。

0
kooli

まず、サーバーの現在の日付時刻に目的の形式を指定してみてください。

  1. 現在の日時を取得する

    $ current_date = getdate();

  2. 日付と時刻を分けて、必要に応じて管理します。

$ current_date_only = $ current_date [year] .'- '。$ current_date [mon] .'-'。$ current_date [mday]; $ current_time_only = $ current_date ['hours']。 ':'。$ current_date ['minutes']。 ':'。$ current_date ['seconds'];

  1. DBでdonly dateまたはdatetimeを使用しているかどうかに応じて比較します。

    $ today = $ current_date_only。 ' '。$ current_time_only;

    または

    $ today = $ current_date_only;

    if($ today <$ expireDate)

それが役に立てば幸い

0
ernestoloredo

PHPで2つの日付の日数の差を取得する方法についての私のスピンです。 「!」の使用に注意してください DateTime createFromFormat without time からの情報のおかげで、日付の時刻部分を破棄する形式で。

$today = DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
$wanted = DateTime::createFromFormat('!d-m-Y', $row["WANTED_DELIVERY_DATE"]);
$diff = $today->diff($wanted);
$days = $diff->days;
if (($diff->invert) != 0) $days = -1 * $days;
$overdue = (($days < 0) ? true : false);
print "<!-- (".(($days > 0) ? '+' : '').($days).") -->\n";
0
nwsmith