new - php datetime compare only date



Como posso comparar duas datas no PHP? (9)

Como posso comparar duas datas no PHP?

No banco de dados, a data parece 2011-10-2.

Se eu quisesse comparar a data de hoje com a data no banco de dados para ver qual é a maior, como eu faria isso?

Eu tentei isso,

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

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

mas realmente não funciona assim. Qual é outra maneira de fazer isso?

Update: Eu sei que este post é meio antigo, mas eu só queria mencionar o carbono, que é uma classe que é usada com laravel, mas pode ser usada com o php clássico e faz maravilhas com datas. confira: Carbon

https://src-bin.com


Answer #1

no banco de dados a data parece com isso 2011-10-2

Guarde-o em AAAA-MM-DD e, em seguida, a comparação de cadeias funcionará porque "1"> "0", etc.


Answer #2

Antes de mais nada, tente dar o formato desejado para a data atual do seu servidor:

  1. Obter data atual

    $ current_date = getdate ();

  2. Data e hora separadas para gerenciá-los como desejar:

$ current_date_only = $ current_date [year] .'- '. $ current_date [mon] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['horas']. ':'. $ current_date ['minutes']. ':'. $ current_date ['segundos'];

  1. Compare-o dependendo se você estiver usando donly data ou datetime no seu banco de dados:

    $ today = $ current_date_only. ' '$ current_time_only;

    ou

    $ today = $ current_date_only;

    if ($ hoje <$ expireDate)

espero que ajude


Answer #3

Aqui está o meu giro sobre como obter a diferença em dias entre duas datas com o PHP. Observe o uso de '!' no formato para descartar a parte do tempo das datas, graças às informações do DateTime createFromFormat sem tempo .

$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";

Answer #4

Aqui está uma maneira de obter a diferença entre duas datas em minutos.

// 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;

Answer #5

Eu não faria isso com PHP. Um banco de dados deve saber, que dia é hoje (use o MySQL-> NOW () por exemplo), então será muito fácil comparar dentro da Consulta e retornar o resultado, sem problemas dependendo dos Data-Types utilizados

SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName

Answer #6

Eu também tive esse problema e resolvo:

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

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

Answer #7

Simplesmente você pode verificar ..

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

mas ambas as datas devem estar no mesmo formato

Ymd ou dmY

etc.


Answer #8

Você pode usar PHP simples para comparar datas:

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

Isso lhe dará verdadeiro ou falso.

Você pode verificar os tutoriais para mais exemplos. Por favor clique aqui .


Answer #9
$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";
   }




compare