20. Januar 200323 j 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!
20. Januar 200323 j 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
20. Januar 200323 j 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
20. Januar 200323 j 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
20. Januar 200323 j 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?
20. Januar 200323 j 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
20. Januar 200323 j 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
20. Januar 200323 j 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?
20. Januar 200323 j Probier mal folgendes: //führende 0 entfernen $hilf = substr($monat,0,1); if ($hilf == "0") $monat = substr($monat,1,1); [/php] Frank
21. Januar 200323 j 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!
21. Januar 200323 j 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
21. Januar 200323 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.