Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
#1 · Zasláno: 17. 7. 2014, 09:33:01
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 |
#2 · Zasláno: 17. 7. 2014, 10:58:12
nethor:
zkus se podívat na mktime |
||
nethor Profil |
#3 · Zasláno: 17. 7. 2014, 11:03:12
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 |
#4 · Zasláno: 17. 7. 2014, 11:05:34
nethor:
ještě zkus http://php.net/manual/en/datetime.diff.php |
||
nethor Profil |
#5 · Zasláno: 17. 7. 2014, 11:50:32
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 |
#6 · Zasláno: 17. 7. 2014, 17:56:38
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 |
#7 · Zasláno: 17. 7. 2014, 18:46:19
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 |
#8 · Zasláno: 17. 7. 2014, 22:56:44
Alphard, Jan Tvrdík:
Díky za vysvětlení. |
||
Časová prodleva: 10 let
|
0