port: Datums vergleich mit date()

Hallo,

ich möchte ein eingegebenes Datum mit dem aktuellen Datum vergleichen,
weiss aber noch nicht wie.

Angenommen ich habe die Möglichkeit das Datum selder einzugeben
z.B.
$tag = 1 ;
$monat = 6;
$jahr = 2003;

(1-6-2003 = 162003)
wie stell ich jetzt den Vergleich mit dem aktuellen Datum her?

So gehts nicht z.B. if( ( $tag.$monat.date("Y")) > date("dnY") ){ ...( 162003 > 2352003 ) ne!

hmm... kann ich den String den ich erzeuge nicht wieder in eine date() function wandeln? damit meine ich das:
date("dnY" mktime(0,0,0,$tag,&monat,$jahr) )

geht das oder was kann ich machen?
gruß port

  1. hey,

    Du mußt zunächst mal Deinen string in ein datum konvertieren...
    geht folgendermaßen:

    $datum = mktime ($stunde, $minute, $sekunde, $monat, $tag, $jahr);
    $datum = date("Y-m-d", $datum);

    mfG,
        Markus.

    1. Hi,

      $datum = mktime ($stunde, $minute, $sekunde, $monat, $tag, $jahr);
      $datum = date("Y-m-d", $datum);

      aaahhh...

      DANKE
      port

      1. Hi!

        $datum = mktime ($stunde, $minute, $sekunde, $monat, $tag, $jahr);
        $datum = date("Y-m-d", $datum);

        Schnickschnack!

        Hat Probleme wennst ein anderes Format von einer Datenbank bekommst!

        Besser:
        int strtotime(string,[timestamp]")

        gibt dir einen Unix Timestamp den du problemlos auf größer und kleiner vergleichen kannst!

        Ach ja:
        int strtotime("+ 1 Woche",<timestamp>)
        Ist eine geile Möglichkeit mit Daten zu Rechnen *ggg*

        Tipp: www.php.net die PHP-Hilfe runterladen!!!!
        --------------
        mfg DMIII
        --------------

  2. (1-6-2003 = 162003)
    wie stell ich jetzt den Vergleich mit dem aktuellen Datum her?

    So gehts nicht z.B. if( ( $tag.$monat.date("Y")) > date("dnY") ){ ...( 162003 > 2352003 ) ne!

    Wenn Du es so machen möchtest, dann solltest Du die Regeln unseres Zahlensystems beachten und mit dem höchstwertigsten Teil links beginnen. Bei "normalen" Zahlen stehen links immer die größten Stellen, dann folgen die kleineren: z.B. Tausender, Hunderter, Zehner, Einer. Beim Datum läuft es ähnlich: Erst das Jahr, gefolgt vom Monat und schlußendlich dem Tag. Deine Zahl muß also 20030601 lauten, nicht 162003. Beachte auch die _zwei_stelligen Monats- und Tagesstellen!

    Alternativ kannst Du auch die Funktion mktime() verwenden, die Dir das Datum in eine Sekundenzahl ab Neujahr, 1.1.1970, umwandelt ("Unix timestamp"). Dieses Format wird auch von einer Reihe anderen Funktionen benutzt und lässt sich relativ leicht in Berechnungen nutzen.
    Beachte jedoch unbedingt, daß diese Unixzeit Weltzeit/GMT/UTC ist, nicht die hierzulande gebräuchliche mitteleuropäische Zeit! Du wärest nicht der erste, der sich wundert, warum zweimal im Jahr die Rechnungen nicht stimmen - wegen der Sommerzeit gibt es einen Tag im Jahr mit 23 Stunden und einen mit 25; insbesondere die gern genutzte Gleichung "plus 24 Stunden = plus 1 Tag" funktioniert nicht unbedingt.
    Im Falle von mktime() ist es deshalb sinnvoll, als Uhrzeit 12 Uhr anzugeben statt 0 Uhr.

    Gruß,
      soenk.e

  3. ich möchte ein eingegebenes Datum mit dem aktuellen Datum vergleichen,
    weiss aber noch nicht wie.

    Angenommen ich habe die Möglichkeit das Datum selder einzugeben
    z.B.
    $tag = 1 ;
    $monat = 6;
    $jahr = 2003;

    (1-6-2003 = 162003)
    wie stell ich jetzt den Vergleich mit dem aktuellen Datum her?

    So gehts nicht z.B. if( ( $tag.$monat.date("Y")) > date("dnY") ){ ...( 162003 > 2352003 ) ne!

    dann erzeuge dir zuerst einen timestamp, indem du tag, monat und jahr an mktime() übergibst (restliche werte auf null setzen).

    wenn du diesen timestamp jetzt ebenfalls mit date("dnY", $mein-timestamp) formatierst, kannst du ihn mit date("dnY") vergleichen.

    moment, da fällt mir gerade ein, das date ja einen string zurückgibt, keine zahl.

    also müsstest date("Ymd") verwenden, um mit grösser oder kleiner-vergleichen sinnvolle werte zu bekommen.