Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

letzter Tag eines Monats berechnen und ausgeben!

Empfohlene Antworten

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!


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

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

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?

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

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

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?

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!

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

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.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.