Peter Schenkel: time() und mktime()

hallo,

ich habe ein problem mit einem datumsvergleich, ich generiere mit mktime(stunde,minute,sekunde,monat,tag,jahr) eines beliebigen datums eine timestamp dann ziehe ich von der aktuellen timestamp (mit time()) den wert ab und sollte dann ja eigentlich den unterschied in sekunden erhalten und wenn ich diesen durch 60 tiele den abstand in minuten , aber das funktioniert nicht, ich bekomme zwar immer zwei timestamps aber selbst wenn sie in realtität nur eine minute auseinander liegen bekomme ich einen unterschied von mehreren 1000 sekunden.
Wenn ich nun zwei timestamps mit mktime () erstelle und diese voneinander abziehe bekomme ich das richige ergebnis...kann einer helfen ? bin langsam echt ratlos...

Peter

  1. hallo,

    ich habe ein problem mit einem datumsvergleich, ich generiere mit mktime(stunde,minute,sekunde,monat,tag,jahr) eines beliebigen datums eine timestamp dann ziehe ich von der aktuellen timestamp (mit time()) den wert ab und sollte dann ja eigentlich den unterschied in sekunden erhalten und wenn ich diesen durch 60 tiele den abstand in minuten , aber das funktioniert nicht, ich bekomme zwar immer zwei timestamps aber selbst wenn sie in realtität nur eine minute auseinander liegen bekomme ich einen unterschied von mehreren 1000 sekunden.
    Wenn ich nun zwei timestamps mit mktime () erstelle und diese voneinander abziehe bekomme ich das richige ergebnis...kann einer helfen ? bin langsam echt ratlos...

    Peter

    Frage: Warum brauchst Du die Funktion mktime()? Zieh doch die beiden ints, die Dir die Funktion time() zu den gewünschten Start- und Endzeitpunkten liefert, voneinander ab. Oder hab ich Dein Problem nicht ganz erkannt?

    1. also ich habe ein datum in zahlen ...also 12:33:00 05.10.2002 z.B.
      davon brauche ich eine timestamp. Davon habe ich eben nur die zahlen und KEINE timestamp ,d.h. ich benutze mktime und mir eine timestamp zu generieren mit der ich abreiten kann...
       dann nehme ich eine timestamp von jetzt und ziehe die beiden gegeneinander ab und sollte die  differenz erhalten...was aber eben nicht so ganz funktioniert weil immer zu hohe werte rauskommen...
      jetzt klarer ? :-)

      1. also ich habe ein datum in zahlen ...also 12:33:00 05.10.2002 z.B.
        davon brauche ich eine timestamp. Davon habe ich eben nur die zahlen und KEINE timestamp ,d.h. ich benutze mktime und mir eine timestamp zu generieren mit der ich abreiten kann...
        dann nehme ich eine timestamp von jetzt und ziehe die beiden gegeneinander ab und sollte die  differenz erhalten...was aber eben nicht so ganz funktioniert weil immer zu hohe werte rauskommen...
        jetzt klarer ? :-)

        Nochmal Hallo!

        Also ich denke, daß das wirklich das Problem ist, das schon beschrieben wurde: Irgendeine Uhr geht falsch oder man benutzt verschiedene Zeitzonen,... Sieht nach einem Synchronisationsproblem aus!

        Gruß, Bernd Armbruster

  2. Hallo,

    ich habe ein problem mit einem datumsvergleich, ich generiere mit mktime(stunde,minute,sekunde,monat,tag,jahr) eines beliebigen datums eine timestamp dann ziehe ich von der aktuellen timestamp (mit time()) den wert ab und sollte dann ja eigentlich den unterschied in sekunden erhalten und wenn ich diesen durch 60 tiele den abstand in minuten , aber das funktioniert nicht, ich bekomme zwar immer zwei timestamps aber selbst wenn sie in realtität nur eine minute auseinander liegen bekomme ich einen unterschied von mehreren 1000 sekunden.
    Wenn ich nun zwei timestamps mit mktime () erstelle und diese voneinander abziehe bekomme ich das richige ergebnis...kann einer helfen ? bin langsam echt ratlos...

    Ein Timestamp ist die Anzahl an Sekunden, die seit dem Donnerstag, dem 1.1.1970 um 00:00:00 Uhr GMT vergangen sind. mktime() berücksichtigt beim Erstellen eines Timestamps die lokale Zeitzoneneinstellung. Daher kann es zu solchen Diskrepanzen kommen, wenn die Lokalzeit bzw. die lokale Zeitzone nicht korrekt eingestellt ist.

    Grüße,

    Christian

    1. und wie kann ich das ändern wenn ich den befehl gmmktime nehme funktionier das auch nicht wirklich richtig...

      1. Hallo,

        und wie kann ich das ändern wenn ich den befehl gmmktime nehme funktionier das auch nicht wirklich richtig...

        In gmmktime steckt man ja auch GMT-Zeit rein => keine Lösung.

        Welches Betriebsystem? Dann können wir vielleicht weiterhelfen.

        Grüße,

        Christian

        1. auf dem webserver auf dem das laufen wird läuft linux...

          1. Hallo, <-- Begrüßung

            auf dem webserver auf dem das laufen wird läuft linux...

            dann tippe bitte mal auf der Kommandozeile das Kommando "date" ein und poste die Ausgabe hier. Diese enthält Datum, Uhrzeit und Zeitzone.

            Grüße, <-- Abschied

            Christian