Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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

Geschrieben


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
Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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?

Geschrieben

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!

Geschrieben

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

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...