DFBL-Benjamin Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 ich habe ein kleines Problemchen. ich programmiere gerade einen Urlaubsplaner. wenn jetzt einer z. b. vom 25.01-05.02.2003 Urlaub macht. wie bekomme ich dann vom Monat 01 (Januar) den letzten Tag des Monats? es muss 31 rauskommen, aber bloß wie? ich wollte es so machen: 1. // 01 = Januar 2. $zeitstempel = strtotime("$array_datum_start[1] (='01') "); 3. $datums_array = getdate($zeitstempel); 4. $datums_array["mday"]; [/PHP] wahrscheinlich ist ein Fehler in der Zeile 4 bzw. auch schon weiter vorne, aber die Zeile 4 gibt mir jetzt wenn ich echo davor setze 20 raus, das ist der aktuelle Tag, ich möchte den letzten Tag im Monat haben! hoffe jemand hat eine Idee wie ich das Problem beseitigen kann! Zitieren
robotto7831a Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 Hallo, warum ziehst Du nicht vom 1. Februar 86400 Sekunden ab und läst das dann als Datum ausgeben. Dann hast Du den 31. Januar. //$zeitstempel = 1 February 2003 08:00:00 $zeitstempel = $zeitstempel - 86400; $datum = date ("YmdHis", $res); [/php] Frank Zitieren
DFBL-Benjamin Geschrieben 20. Januar 2003 Autor Geschrieben 20. Januar 2003 1. $zeitstempel = "1 February 2003 08:00:00"; 2. $zeitstempel = $zeitstempel - 86400; 3. $datum = date ("YmdHis", $res); [/PHP] Zeile 1: Diese Zeile muss doch schon gesetzt werden, oder nimmt er einfach das aktuelle Datum? Zeile 3: was bedeutet YmdHis? Woher nimmst du $res? ist das Standard? wie findet er dann die Zeit heraus? außerdem ist noch ein Fehler drin. Es gibt mir was ganz falsches aus: 19700101010000 Zitieren
robotto7831a Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 Ich habe vergessen $res zu ändern. Hier nochmal die ganze Funktion. $monat_eng = array(1=>"January",2=>"February",3=>"March",4=>"April",5=>"May",6=>"June",7=>"July",8=>"August",9=>"September",10=>"October",11=>"November",12=>"December",); //Startdatum zusammensetzen $startstring = $tag." ".$monat_eng[$monat]." ".$jahr." ".$stunde.":".$minute.":".$sekunde; //Timestamp ermitteln $res = strtotime($startstring); //aktuelle Timestamp - 1 Tag rechnen $res=$res-86400; //Timestamp in Datum umwandeln $datum = date ("YmdHis", $res); //Ausgabe ist JahrMonatTagStundeMinuteSekunde echo $datum; [/php] Die Datumsausgabe kann man natürlich ändern. Frank Zitieren
DFBL-Benjamin Geschrieben 20. Januar 2003 Autor Geschrieben 20. Januar 2003 ich habs jetzt soweit angepasst, das es was ausgibt. aber wie bekomme ich jetzt den letzten Tag des Monats herraus? ich bekomme immer noch das gleiche Ergebnis raus. irgend etwas mache ich falsch! aber was? Zitieren
robotto7831a Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 Probier mal das. $tag = 1; $monat = 2; $jahr = 2003; $stunde = 8; $minute = 21; $sekunde = 59; $monat_eng = array(1=>"January",2=>"February",3=>"March",4=>"April",5=>"May",6=>"June",7=>"July",8=>"August",9=>"September",10=>"October",11=>"November",12=>"December",); //Startdatum zusammensetzen $startstring = $tag." ".$monat_eng[$monat]." ".$jahr." ".$stunde.":".$minute.":".$sekunde; //Timestamp ermitteln $res = strtotime($startstring); //aktuelle Timestamp - 1 Tag rechnen $res=$res-86400; //Timestamp in Datum umwandeln $datum = date ("d.m.Y H:i:s", $res); //Ausgabe ist JahrMonatTagStundeMinuteSekunde echo "Datum - 1 Tag ist: ".$datum; [/php]Frank Zitieren
Jaraz Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 Hi, wenn ihr mal endlich Dokus lesen würdet (dafür sind sie da ), ginge das alles wesentlich schneller. http://www.php.net/manual/en/function.date.php date("t") liefert Anzahl der Tage des aktuellen Monats. date ("t", mktime(0,0,0,7,1,2000)) liefert Tage vom July 2000 Gruß Jaraz Zitieren
DFBL-Benjamin Geschrieben 20. Januar 2003 Autor Geschrieben 20. Januar 2003 ich habs folgender Maßen gelöst! 1. $zaehler = "$array_datum_start[1]"/"1"; 2. $monat = "$zaehler"; 3. $monat_eng = array(1=>"January",2=>"February",3=>"March",4=>"April",5=>"May",6=>"June",7=>"July",8=>"August",9=>"September",10=>"October",11=>"November",12=>"December",); 4. $tag = "1"; 5. $jahr = "2003"; 6. $stunde = "15"; 7. $minute = "15"; 8. $sekunde = "15"; 9. //Startdatum zusammensetzen 10.$startstring = $tag." ".$monat_eng[$monat]." ".$jahr." ".$stunde.":".$minute.":".$sekunde; 11. //Timestamp ermitteln 12. $res = strtotime($startstring); 13. //aktuelle Timestamp - 1 Tag rechnen 14. $res=$res-86400; 15. //Timestamp in Datum umwandeln 16. $datum = date ('d', $res); 17. //Ausgabe ist JahrMonatTagStundeMinuteSekunde 18. $ergebnis1 = $datum; [/PHP] zu Zeile 1: $array_datum_start[1] = "01" und das hat das Programm nicht mitgemacht. Ich musste die 0 weg bekommen, so habe ich das halt geteilt durch 1 gemacht und so gings jetzt! oder habt ihr noch eine bessere Idee, wie man das noch Sauberer lösen kann? Zitieren
robotto7831a Geschrieben 20. Januar 2003 Geschrieben 20. Januar 2003 Probier mal folgendes: //führende 0 entfernen $hilf = substr($monat,0,1); if ($hilf == "0") $monat = substr($monat,1,1); [/php] Frank Zitieren
DFBL-Benjamin Geschrieben 21. Januar 2003 Autor Geschrieben 21. Januar 2003 es klappt alles wunderbar aber jetzt ist mir heute eingefallen, das es auch Feiertage gibt. wie bekomme ich die jetzt raus? weil es wird ja nicht im engl. Format gehen, die deutschen Feiertage rauszuziehen! Zitieren
robotto7831a Geschrieben 21. Januar 2003 Geschrieben 21. Januar 2003 Probier mal folgendes: $Jahr = 2003; //Osterformel nach Carl Friedrich Gauß (1777-1855) //Gültigkeitsbereich ist vom Jahre 1583 - 8202 // Diese Function rechnet das Datum des Vollmondes aus $a = bcmod($Jahr,19); $b = bcmod($Jahr,4); $c = bcmod($Jahr,7); $M = (((8 * ($Jahr / 100) + 13) / 25) - 2); $s = ($Jahr / 100) - ($Jahr / 400) - 2; $M = bcmod((15 + $s - $M),30); $N = bcmod((6 + $s), 7); $d = bcmod(($M + 19 * $a), 30); If ($d == 29) $d = 28; If (($d == 28) && ($a >= 11)) $d = 27; $e = bcmod((2 * $b + 4 * $c + 6 * $d + $N), 7); // Tage berechnen $startstring = "21 March ".$Jahr." 08:00:00"; $res = strtotime($startstring); $res = (($d+$e+1)*86400)+$res; $ostersonntag = $res; $datum = date ("d.m.Y", $res); $ostersonntag2 = $datum; echo "Ostersonntag: ".$datum."<br>"; $res = $ostersonntag +86400; $datum = date ("d.m.Y", $res); $ostermontag = $datum; echo "Ostermontag: ".$datum."<br>"; $res = $ostersonntag - (86400*2); $datum = date ("d.m.Y", $res); $karfreitag = $datum; echo "Karfreitag: ".$datum."<br>"; $res = $ostersonntag + (86400*49); $datum = date ("d.m.Y", $res); $pfingstsonntag = $datum; echo "Pfingstsonntag: ".$datum."<br>"; $res = $ostersonntag + (86400*50); $datum = date ("d.m.Y", $res); $pfingstmontag = $datum; echo "Pfingstmontag: ".$datum."<br>"; $res = $ostersonntag + (86400*39); $datum = date ("d.m.Y", $res); $himmelfahrt = $datum; echo "Himmelfahrt: ".$datum."<br>"; $res = $ostersonntag - (86400*46); $datum = date ("d.m.Y", $res); $aschermittwoch = $datum; echo "Aschermittwoch: ".$datum."<br>"; $res = $ostersonntag + (86400*60); $datum = date ("d.m.Y", $res); $frohnleichnam = $datum; echo "Frohnleichnam: ".$datum."<br>"; [/php] Frank Zitieren
Spoom Geschrieben 21. Januar 2003 Geschrieben 21. Januar 2003 Also ich weiß ja nicht, was eure problem ist aber mit Date() und geht das: t - Anzahl der Tage des angegebenen Monats: "28" bis "31" Warum kompliziert, wenns auch einfach geht ? MfG Spoom Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.