Autor Zpráva
mikk
Profil
Ahoj.

Mám problém s následující podmínkou a lednovými daty:
<?php
$stedryden = 1224; /*Štědrý den*/
$silvestr = 1231; /*konec roku - Silvestr*/
$novyrok = 0101; /*Nový rok*/
$datum = date (m.d); /*mmdd; 25.1. = 0125*/

 if     (
     ( ($datum >= $stedryden) and ($datum <= $silvestr) ) or ($datum == $novyrok)
    )
    {echo 'tohle by tu mělo být v celém období a dnes taky<br>';}; /*má se zobrazit od 24.12. do 31.12. a 1.1. - každý rok*/
Celé období vše fungovalo, ale prvního ledna se nezobrazí nic. Ověřil jsem, že $datum vrací 0101 i jsem zkoušel to celé zjednodušit čistě na $datum proti 0101 a výsledek je, že se to podle výstupu nerovná - už z toho asi magořím a žádnou chybu nemůžu najít, asi ji mám někde v zápisu.

Mohl by mi někdo prosím poradit, kde mám chybu?
Davex
Profil
Hodnotu proměnné $novyrok zadáváš v osmičkové soustavě a v desítkové soustavě tam je tedy jiné číslo než se kterým porovnáváš.
DJ Miky
Profil
Zápis čísla začínající nulou znamená osmičkovou soustavu (0101 je desítkově 65), proto se 65 (0101) nerovná 101 (výsledek date(), což je řetězec, u kterého se automaticky předpokládá desítková soustava). Měl bys tedy zapsat $novyrok = 101;, když už to chceš porovnávat takto.

Přehlednější by mi přišlo porovnávat zvlášť měsíc a zvlášť den.

Mimochodem, zápis date(m.d) je špatně (funguje jenom díky benevolenci PHP), date() přijímá řetězec, tedy správně by to bylo date('md').
mikk
Profil
Davex:
Díky.
Našel jsem teď ještě jedno řešení, a sice zapsat hodnoty jako řetězce => '1224', '1231' a '0101'.

DJ Miky:
Díky, kouknu na to.

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: