Datum über 2010 mit strptime

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datum über 2010 mit strptime

    Hallo zusammen,

    strptime bereitet mir gerade Kopfzerbrechen und ich hoffe es kann mir jemand auf die Sprünge helfen:

    Folgendes (vereinfachtes) Script habe ich geschrieben:

    PHP-Code:
    $parts[1]='24';
    $parts[2]='04';
    $parts[3]='2011';  //Dies ist nur zur vereinfachung, eigentlich werden die Daten aus einem string extrahiert...

    $strf strptime($parts[1].'/'.$parts[2].'/'.$parts[3],'%d/%m/%Y')

    $result=mktime(001$strf[tm_mon]+$strf[tm_mday], $strf[tm_year]); 
    $strf sieht dann übrigens so aus:

    Array ( [tm_sec] => 0 [tm_min] => 0 [tm_hour] => 0 [tm_mday] => 24 [tm_mon] => 3 [tm_year] => 111 [tm_wday] => 0 [tm_yday] => 113 [unparsed] => )

    (Zwischenfrage warum tm_year => 111 ??? und nicht 2011)

    Ziel des ganzen solle es sein, die $parts eines datums in ein ordentliches format mit mktime zu bringen. Das funktioniert auch bestens bei allen Daten früher als das Jahr 2011. Ab 2011 ergibt sich das Datum 1.1.1970!?!?!

    Ich hoffe jemand hat eine Erklärung. Ist das eine art millenium bug?

    DAnke!!!!

  • #2
    Re: Datum über 2010 mit strptime

    Original geschrieben von itsmejake
    (Zwischenfrage warum tm_year => 111 ??? und nicht 2011)
    Weil wegen ... RTFM!
    tm_year Years since 1900
    Das funktioniert auch bestens bei allen Daten früher als das Jahr 2011. Ab 2011 ergibt sich das Datum 1.1.1970!?!?!
    Kann ich nicht nachvollziehen.

    Wenn ich $parts[3] auf '2012' aendere, und damit mit deinem Beispielcode teste (und bei mktime die 1900 auf's Jahr draufaddiere), dann gibt mir date('r', $result) "Tue, 24 Apr 2012 00:00:01 +0200" aus.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar

    Lädt...
    X