Um aus einem Datum das dazu gehörende Sternzeichen zu ermitteln, habe ich dieses im Netz gefundene Script eingesetzt:
function sternzeichen($day, $month) {
$zodiac = array('Steinbock','Steinbock','Wassermann','Fische','Widder',
'Stier','Zwilling','Krebs','Löwe','Jungfrau','Waage',
'Skorpion','Schütze');
$dates = array( 0 => array(mktime(0,0,0,12,22), mktime(0,0,0,12,31)),
1 => array(mktime(0,0,0,01,01), mktime(0,0,0,01,19)),
2 => array(mktime(0,0,0,01,20), mktime(0,0,0,02,18)),
3 => array(mktime(0,0,0,02,19), mktime(0,0,0,03,20)),
4 => array(mktime(0,0,0,03,21), mktime(0,0,0,04,19)),
5 => array(mktime(0,0,0,04,20), mktime(0,0,0,05,20)),
6 => array(mktime(0,0,0,05,21), mktime(0,0,0,06,21)),
7 => array(mktime(0,0,0,06,22), mktime(0,0,0,07,22)),
8 => array(mktime(0,0,0,07,23), mktime(0,0,0,08,22)),
9 => array(mktime(0,0,0,08,23), mktime(0,0,0,09,22)),
10 => array(mktime(0,0,0,09,23), mktime(0,0,0,10,23)),
11 => array(mktime(0,0,0,10,24), mktime(0,0,0,11,21)),
12 => array(mktime(0,0,0,11,22), mktime(0,0,0,12,21)));
foreach($dates as $k=>$v) {
if(mktime(0,0,0,$month,$day) >= $v[0] && mktime(0,0,0,$month,$day) <= $v[1]) {
return $zodiac[$k];
}
}
return FALSE;
}
Das funktioniert auch soweit, nur wird bei manchen Daten immer Waage ausgegeben. Läßt man sich dann jeweils per date() das Datum ausgeben, wird von $v[1] in Zeile 8 bis $v[0] in Zeile 10 immer der 22. bzw. 23.12. des Vorjahres ausgegeben.
Nimmt man jetzt die führenden Nullen bei dem Monat raus, stimmt die Ausgabe.
Jetzt meine Frage: Ist da ein Fehler in de mktime Befehl oder woher kommt der Effekt?
function sternzeichen($day, $month) {
$zodiac = array('Steinbock','Steinbock','Wassermann','Fische','Widder',
'Stier','Zwilling','Krebs','Löwe','Jungfrau','Waage',
'Skorpion','Schütze');
$dates = array( 0 => array(mktime(0,0,0,12,22), mktime(0,0,0,12,31)),
1 => array(mktime(0,0,0,01,01), mktime(0,0,0,01,19)),
2 => array(mktime(0,0,0,01,20), mktime(0,0,0,02,18)),
3 => array(mktime(0,0,0,02,19), mktime(0,0,0,03,20)),
4 => array(mktime(0,0,0,03,21), mktime(0,0,0,04,19)),
5 => array(mktime(0,0,0,04,20), mktime(0,0,0,05,20)),
6 => array(mktime(0,0,0,05,21), mktime(0,0,0,06,21)),
7 => array(mktime(0,0,0,06,22), mktime(0,0,0,07,22)),
8 => array(mktime(0,0,0,07,23), mktime(0,0,0,08,22)),
9 => array(mktime(0,0,0,08,23), mktime(0,0,0,09,22)),
10 => array(mktime(0,0,0,09,23), mktime(0,0,0,10,23)),
11 => array(mktime(0,0,0,10,24), mktime(0,0,0,11,21)),
12 => array(mktime(0,0,0,11,22), mktime(0,0,0,12,21)));
foreach($dates as $k=>$v) {
if(mktime(0,0,0,$month,$day) >= $v[0] && mktime(0,0,0,$month,$day) <= $v[1]) {
return $zodiac[$k];
}
}
return FALSE;
}
Das funktioniert auch soweit, nur wird bei manchen Daten immer Waage ausgegeben. Läßt man sich dann jeweils per date() das Datum ausgeben, wird von $v[1] in Zeile 8 bis $v[0] in Zeile 10 immer der 22. bzw. 23.12. des Vorjahres ausgegeben.
Nimmt man jetzt die führenden Nullen bei dem Monat raus, stimmt die Ausgabe.
Jetzt meine Frage: Ist da ein Fehler in de mktime Befehl oder woher kommt der Effekt?
Kommentar