Autor Zpráva
icka
Profil *
Ahoj lidi, potřeboval bych pomoci s funkcí, která by mi v poli vracela všechny čtvrtky, ale vždy v tom roce, kterej tam pošlu.. Takže takhle vypis_ctvrtky(2005). Zatím to mám tak, že to najde první a pak to s pomocí cyklu for skáče po dni (kvuli přestupnému roku), ale je to dost neohrabaný a nevím jak to dát pořádně dohromady...


function vypis_ctvrtky($rok) {
$rok_zacat = mktime(0,0,0,1,1,$rok);
$rok_konec = mktime(0,0,0,12,31,$rok);
for ($i=$rok_zacat; $i<=$rok_konec; $i=($i+86400)) {
if (date("D", $i) == "Thu") {
$ctvrtek[] = mktime(0,0,0,date("m",$i),date("d",$i),$rok);
}
}
return $ctvrtek;
}
icka
Profil *
Jo a navíc v měsíci 7 a 8 to musí brát jen ob-jeden. Takže jednou za 14 dní. Tzn, že v měsíci 7 to vezme první čtvrtek a další až za 14 dní. A takhle ještě v měsíci 8. Jak přijde měsíc 9, tak se to vrátí do normálu... :-D
WertriK
Profil *
Ja bych to rešil pomocí dvou cyklů;


function vypis_ctvrtky($rok)

// mesice
for($i=1;$i <= 12; $i++) {
// dny v mesici
for ($y=1;$y <= 31;$y++) {

// kontrola jestli datum je platne
if (checkdate($i, $y, $rok) == TRUE) {

if (date ("l", mktime (0,0,0,$i,$y,$rok)) == "Thursday") {
echo "Čtvrtek $y,$i,$rok <br>";
}

}

}
}

}


funguje to, jsem to zkusel na svem webu.....
WertriK
Profil *
zapomel jsem jednu slozenou zavorku ;)

function vypis_ctvrtky($rok) {
// mesice

for($i=1;$i <= 12; $i++) {

// dny v mesici

for ($y=1;$y <= 31;$y++) {
// kontrola jestli datum je platne

if (checkdate($i, $y, $rok) == TRUE) {
if (date ("l", mktime (0,0,0,$i,$y,$rok)) == "Thursday") {

echo "Čtvrtek $y,$i,$rok <br>";

}
}
}

}
}


toto to vypise pro rok 2005 :
...
Čtvrtek 23,6,2005
Čtvrtek 30,6,2005
Čtvrtek 7,7,2005
Čtvrtek 14,7,2005
Čtvrtek 21,7,2005
Čtvrtek 28,7,2005
..
když se podíváš do kalendáře tak zjistíš že to funguje - doufám, já se tam nedíval...
Kaifman
Profil
a co takhle

function vypis_ctvrtky($rok)
for($i=1;$i <= 365; $i++) {
if (date ("w", mktime (0,0,0,$i,0,$rok)) == 3)
echo "Čtvrtek ".date ("d.m.Y", mktime (0,0,0,$i,0,$rok)) <br>";
}
}
icka
Profil *
A řeší to přestupné roky?
icka
Profil *
Jak psal WertriK, tak to vypisuje čtvrtky dobře, ale neumí to zase přeskakovat v tom měsíci 7 a 8 ob týden...
WertriK
Profil *
jen si to prubni, mozna to bude chtit trosku doladit ale jinak to funguje

<?
function vypis_ctvrtky($rok) {
// mesice
for($i=1;$i <= 12; $i++) {
// dny v mesici
for ($y=1;$y <= 31;$y++) {

// kontrola jestli datum je platne
if (checkdate($i, $y, $rok) == TRUE) {

if (date ("l", mktime (0,0,0,$i,$y,$rok)) == "Thursday") {

if (($i == 7) || ($i == 8)) {

// prvni ctrvtek v mesici
if ($y <= 7) {
echo "Čtvrtek $y,$i,$rok <br>";
}

// od 7 do 14 nechceme

// druhy ctvrtek v mesici
if (($y > 14) && ($y <= 21)) {
echo "Čtvrtek $y,$i,$rok <br>";
}
// od 21 do 28 nechceme

// pokud by byl nejaky posledni tak ho vypiseme taky
if ($y >= 28) {
echo "Čtvrtek $y,$i,$rok <br>";
}


} else {
echo "Čtvrtek $y,$i,$rok <br>";
}

}
}
}

}
}

vypis_ctvrtky(2005);
?>
WertriK
Profil *
jeste drobna uprava

<?
function vypis_ctvrtky($rok) {
// mesice
for($i=1;$i <= 12; $i++) {
// dny v mesici
for ($y=1;$y <= 31;$y++) {

// kontrola jestli datum je platne
if (checkdate($i, $y, $rok) == TRUE) {

if (date ("l", mktime (0,0,0,$i,$y,$rok)) == "Thursday") {

if (($i == 7) || ($i == 8)) {

// prvni ctrvtek v mesici
if ($y <= 7) {
echo "Čtvrtek $y,$i,$rok <br>";
}

// od 7 do 14 nechceme

// druhy ctvrtek v mesici
if (($y > 14) && ($y <= 21)) {
echo "Čtvrtek $y,$i,$rok <br>";
}
// od 21 do 28 nechceme

// pokud by byl nejaky posledni tak ho vypiseme taky
if ($y > 28) {
echo "Čtvrtek $y,$i,$rok <br>";
}


} else {
echo "Čtvrtek $y,$i,$rok <br>";
}

}
}
}

}
}

vypis_ctvrtky(2005);
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0