Autor Zpráva
kukweb
Profil
ahoj, snazim se napsat neco, co by me poslalo e-mail ze je den matek.
Koukam do moudrych knih a vubec nemuzu prijit na to jak to udelat.
Rad bych poprosil o radu.

Den matek se slaví vždy druhou květnovou neděli.

Dela mne problem jak prijit na to ze je druha kvetnova nedele :(

2010	9.květen
2011	8.květen
2012	13.květen
2013	12.květen
2014	11.květen
2015	10.květen
2016	8.květen
2017	14.květen
2018	13.květen
2019	12.květen
2020	10.květen
Radek9
Profil
kukweb:
if((int)date("m")==5 && date("D")=="Sun" && (int)date("d")<=14 && (int)date("d")-7>0){
  //…
}
Věřím, že se to dá napsat lépe, ale mělo by to fungovat.
Edit: Popřípadě ještě bez odčítání:
if((int)date("m")==5 && date("D")=="Sun" && (int)date("d")>7 && (int)date("d")<=14){
  //…
}
Bubák
Profil
Možná ti pomůže starší podobné téma:
První pátek v měsíci
Majkl578
Profil
PHP by to mělo být schopno detekovat:

$mothersDay = new DateTime('second sunday of may'); //den matek tento rok
$today = new DateTime; //dnešek

var_dump($mothersDay->format('d.m.Y'), $today->format('d.m.Y'));
var_dump($mothersDay->format('d.m.Y') === $today->format('d.m.Y')); //je dnes den matek?
kukweb
Profil
Diky za vase napady, pouziju toto:

if((int)date("m")==5 && date("D")=="Sun" && (int)date("d")>7 && (int)date("d")<=14){
  //…
}


To je pro me, srozumitelna verze :o)
kukweb
Profil
Majkl578 - predpokladam ze kdyz napisu

$mothersDay = new DateTime('second sunday of may'); //den matek tento rok
echo $mothersDay;


Melo by to ukazat, letosni datm. Bohuzel mne to hlasi chybu.


Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (second sunday of may) at position 14 (o): The timezone could not be found in the database'
Majkl578
Profil
[#5] kukweb:
Ale je to bastl.

[#6] kukweb:
To předpokládáš špatně, třída DateTime nemá metodu __toString, musíš např. výstup formátovat pomocí metody format.
kukweb
Profil
$dateTime = new DateTime("now", new DateTimeZone('GMT'));
echo $dateTime->format("Y-m-d H:i:s");


Nasel jsem nejaky priklad na netu, uz asi vim. Odzkousim.

Slo by pouzit i neco podobneho:

$year=date('Y');
 $sunday = strtotime("next Sunday", mktime(0,0,0,5,7,$year));  
echo date('Y-m-d',$sunday); 

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: