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

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

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...