BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP Problem mit Datum (http://www.black-board.net/thread.php?threadid=23439)


Geschrieben von Flux am 16.07.2008 um 18:29:

  Problem mit Datum

date("d.m.Y", mktime(0, 0, 0, 02, 09, 2008));

ergibt "31.01.2008" anstatt "09.02.2008"

date("d.m.Y", mktime(0, 0, 0, 09, 09, 2008));
ergibt: "30.11.2007"

und ich verstehe grad absolut nicht warum?!?

habe keine fremden faktoren. also effektiv nur

<?php
date(....);
?>



Geschrieben von LX am 16.07.2008 um 18:39:

 

Erstens ist die Parameterreihenfolge von mktime() bei dir falsch. Wie im englischsprachigen Raum leider üblich kommt erst der Monat und dann der Tag.

Außerdem bedeuten vorangestellte Nullen vor Zahlen, dass das ganze als Oktalzahl zu betrachten ist. Ich nehme aber schon an, dass du mit Dezimalzahlen rechnest Augenzwinkern

Das, was du haben willst, wäre also wie folgt korrekt:

php:
1:
date("d.m.Y"mktime(000922008));



Geschrieben von Flux am 17.07.2008 um 09:07:

 

hmm verstehe.

konkret habe ich folgendes problem:

ich habe 2 daten:

1. datum heute als date("d.m.Y")
2. datum an der die rechnung fällig ist.

nun möchte ich ausrechnen, ob am heutigen tag die rechnung bereits bezahlt sein müsste. als muss ich herausfinden ob heute >= Fälligkeitsdatum ist.

das problem ist, dass ich das Fälligkeitsdatum nicht als Date sondern effektiv als Text habe das z.B. so aussieht: 31.12.2008

Wie mach ich das am einfachsten?



Geschrieben von Misel am 17.07.2008 um 09:48:

 

So lange Du PHP >= 5.1 und nicht unter Windows benutzt ginge das mit: http://de.php.net/strptime

Aber es ist wirklichs empfehlenswert, Datumswerte durchweg als timestamp zu speichern und erst bei der Ausgabe mittels strftime() das Format anzupassen.



Geschrieben von phlox81 am 17.07.2008 um 10:48:

 

Und falls du das Ganze in einer DB ablegst, würde ich die Datumsfunktionen der DB per SQL nutzen. z.b. NOW() für heute in MySQL.



Geschrieben von Flux am 17.07.2008 um 11:33:

 

mein ziel ist ja im prinzip ein date in ein timestamp und wieder zurück zu wandeln. habe ich mal folgendermassen probiert:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
// date ohne sekunden
$now date("Y-m-d H:i:00");
echo "now: $now <br>";
            
// date in timestamp
$nowts mktime($now);
echo "nowts: $nowts <br>";
        
// timestamp wieder in date                
$now2 date("d.m.Y"$nowts);
echo "now2: $now2 <br>";


Ergibt momentan:

now: 2008-07-21 12:01:00
nowts: 1223820104
now2: 12.10.2008

was hab ich falsch gemacht? muss ich $now so auseinandersplitten, dass es keine vorstehenden nullen hat? kann ja nicht die elegante lösung sein oder?



Geschrieben von LX am 21.07.2008 um 13:12:

Achtung

Um ein Datum zurück in einen Timestamp zu verwandeln würde ich lieber strptime() verwenden.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH