Autor Zpráva
nethor
Profil
Potřebuji v PHP porovnat dva datumy, správně bych to měl asi udělat přes fci strtotime(),
ale přímé porovnání string funguje také, zajímalo by mne, jestli má nějaké úskalí:

        
$datcas1 = "2014-07-15 17:09:11"    ;
$datcas2 = "2014-07-17 09:22:44"    ;
    
if($datcas1 > $datcas2)  echo "<br> $datcas1 > $datcas2";
if($datcas1 < $datcas2)  echo "<br> $datcas1 < $datcas2";
// vrací správně:  2014-07-15 17:09:11 < 2014-07-17 09:22:44
Taps
Profil
nethor:
zkus se podívat na mktime
nethor
Profil
Taps

O to nejde, přes strtotime() je to podstatně jednodušší.

Mě ale zajímá, jestli má přímé porovnání string datumů nějaké úskalí.
Taps
Profil
nethor:
ještě zkus http://php.net/manual/en/datetime.diff.php
nethor
Profil
Taps:
O to vůbec nejde, řešit to umím.
Zajímá mě, jestli má přímé porovnání string datumů nějaké úskalí.
Alphard
Profil
V tomto formátu by to mělo být v pořádku. Obecně ale PHP při porovnání někdy dost nečekaně přetypuje na číslo a projdou i věci, které by neměly. Zde bych doporučil použít strcmp(), navíc stačí jedno volání pro zjištění menší/stejný/větší.
Jan Tvrdík
Profil
nethor:
Viz také dokumentace. Pokud jsou oba operandy řetězce, které nevypadají jako čísla, tak PHP provede lexikální porovnání, což v tomto případě bude dávat správný výsledek.

V praxi je nicméně téměř vždy lepší převádět data automaticky hned po načtení z databáze na timestamp (číslo) nebo DateTime (objekt) a pracovat dále s nimi.
nethor
Profil
Alphard, Jan Tvrdík:
Díky za vysvětlení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: