Probleme bei Datumsüberprüfung mit 2stelliger Jahreszahl

  • [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Hallo,[/FONT]

    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]ich habe bislang eine funktionierende Zeitüberprüfung mit 4-stelliger Jahreszahl ausführen können (Wert in DB - als String! - war z.B. 23.01.2009)[/FONT]
    [INDENT]
    [/INDENT][FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]-> Der Befehl zum Vergleichen lautet:[/FONT]
    [INDENT][FONT=verdana, geneva, arial, helvetica, sans-serif]PHP:[/FONT]if (strtotime($row["se_dat"])<time()) { echo 'bgcolor = "red";';
    [/INDENT][FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Dieser bewirkt dass, wenn das eingetragene Datum vor dem aktuellen liegt, das Feld einen roten Hintergrund bekommt, was auch wunderbar funktioniert.[/FONT]

    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Nun möchte ich allerdings dass das Datum nur noch 2-stellig angezeigt wird, habe dazu den Befehl abgeändert[/FONT]
    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]- das Datum wird auch nun richtig eingetragen (23.01.09).[/FONT]


    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Aber das Hintergrundfeld wird nun entweder immer bei allen Einträgen in der Spalte oder gar nicht mehr eingefärbt.[/FONT]

    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Kann mir jemand sagen was ich ändern muss, damit der Datums-Vergleich auch bei 2-stelliger Jahreszahl funktioniert?[/FONT]

    Btw: Wenn ich zum vergleichen time() benutze zeigt er kein Feld mit rotem Hintergrund an (also time() immer > se_dat), und wenn ich versuche ein Format vorzugeben mittels time(d.m.y) ist jedes Feld rot hinterlegt (also time(d.m.y) immer < se_dat) ...

    Einmal editiert, zuletzt von Lavingstar (5. Februar 2009 um 09:44)

  • Warum willst du das Datum "verstümmelt" abspeichern? Speichere es doch mit 4-stelliger Jahreszahl und nur bei der Ausgabe reduzierst du das Datum auf 2 Stellen.

  • Ohhhh...das geht !?!? Genau das wäre die beste Lösung!
    Wie es abgespeichert wird, ist ja auch egal im Prinzip - geht mir ja auch nur drum dass es 2-stellig ausgegeben wird.
    Wie funktioniert das, also diese "Nur-Ausgabe" des Datums im Format (d.m.y)?!

    Einmal editiert, zuletzt von Lavingstar (5. Februar 2009 um 10:05)

  • Huhu, mitdenken? Wie kannst du das Datum in einen Timestamp umwandeln? Wie kann man einen Timestamp wieder formatieren? Allerdings wäre es besser, wenn du das Datum in der DB vom Typ DateTime speicherst, dann kannst du dir das schon passend auslesen.

  • Wie kannst du das Datum in einen Timestamp umwandeln? Wie kann man einen Timestamp wieder formatieren?



    Genau das ist meine Frage ... :oops:

    PHP
    // Datum
     $timestamp = time();
     $datum = date("d.m.Y",$timestamp);


    Damit kann ich das Datum in einem bestimmten Format speichern - aber NUR anzeigen ... ?

  • Och büdde!!!

    Genau das ist meine Frage ... :oops:

    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]-> Der Befehl zum Vergleichen lautet:[/FONT][INDENT][FONT=verdana, geneva, arial, helvetica, sans-serif]PHP:[/FONT]if (strtotime($row["se_dat"])<time()) { echo 'bgcolor = "red";';
    [/INDENT]

  • *lach* Sry wenn ich jetzt grad komplett auf m Schlauch stehe ... aber mit strtotime (...) vergleiche ich doch nur die beiden Werte - wie erfolgt die Ausgabe?
    Oder anders ausgedrückt muss ich das ja einfach deklarieren: $se_dat = (irgendwas mit date(d.m.y) (...) ?
    => vllt. $se_dat = date("d.m.y",$timestamp); ??

    - und genau da fehlt mir grad die Syntax oder stehe ich wirklich mit vollem Körpergewicht auf m Schlauch?! :)

    2 Mal editiert, zuletzt von Lavingstar (5. Februar 2009 um 10:39)

  • ok, bin schon einen Schritt weiter:

    $row["se_dat"] = date("d.m.y",$timestamp);

    [FONT=Verdana, Geneva, Arial, Helvetica, sans-serif]Jetzt ist die Formatierung der Jahreszahl zwar 2-stellig, allerdings wird angezeigt: 01.01.70 anstatt wie in dem DB-Feld hinterlegt 01.04.2009[/FONT]

  • Sry wenn ich jetzt grad komplett auf m Schlauch stehe


    Du stehst anscheinend nicht nur auf'm Schlauch, du hast anscheinend eine Denkblockade erster Güte!

    PHP
    <?php
    
    
       $timestamp = strtotime($row['se_dat']);
    
       $ausgabe = date("d.m.y", $timestamp);
    
       $kleiner = ($timestamp < time()) ? true : false;
    ?>


    Garnicht schwer, oder?

  • Danke für den Hinweis :)

    Hab die Ausgabezeile jetzt wie folgt geändert - und damit funktioniert es wunderbar! *froi*

    PHP
    <td class="w50">'.date("d.m.y", strtotime($row['se_dat'])).'</td>