kostenloser Webspace werbefrei: lima-city


date() mit timestamp vor 1970?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    d**********r

    Hi,
    man kann ja keine vor 01.01.1970 Datums (Plural?!) in die "Zeit-Syntax" umwandeln.
    Sprich:
    date('H:i:s', mktime(0,0,0,12,5,1930))

    So gehts nicht. Gibt es aber trotzdem eine M?glichkeit, um einen solchen Timestamp in ein Datum (wie z.B. 'H:i:s') umzuwandeln?!

    mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die Mehrzahl von "Datum" hei?t "Daten". :wink:

    Ob negative Timestamps funktionieren, h?ngt vom Betriebssystem ab. Lediglich Windows und einige bl?de Linux-Distributionen unterst?tzen das nicht. Da ist dann vor dem 1. 1. 1970 Schluss.

    Wenn dein PHP (und das Betriebssystem) also auf

    mktime(0,0,0,12,5,1930)

    einen Timestamp ungleich Null zur?ckgeben, dann kannst du auch date() drauf anwenden.

    Wenn nicht, musst du mit den Kalenderfunktionen von PHP arbeiten:

    http://de.php.net/manual/de/ref.calendar.php

    Diese Erweiterung funktioniert allerdings nicht auf Lima.

    Ich sehe aber auch den Sinn in deiner Fragestellung nicht. Was willst du damit erreichen? Eine Gruppe von Zahlen (0,0,0,12,5,1930) in ein sch?n formatiertes Datum umwandeln? Das geht doch mit den String-Funktionen oder sprintf() wesentlich einfacher.
  4. Autor dieses Themas

    d**********r

    Hei?t das wirklich Daten?^^ Nun gut, ich glaubs jetzt einfach mal^^

    Also jeder User soll, wie hier auch, das Format von Datum und Uhrzeit angeben k?nnen. Wenn zum Beispiel ein Geburtsdatum angezeigt werden soll, dass vor 1970 ist gibt es da nat?rlich Probleme. sprintf() geht da nat?rlich schon, aber man kann dass nat?rlich nur schlecht dynamisch machen, wie bei date(). Oder?


  5. alopex schrieb:
    Die Mehrzahl von 'Datum' hei?t 'Daten'. :wink:

    Ob negative Timestamps funktionieren, h?ngt vom Betriebssystem ab. Lediglich Windows und einige bl?de Linux-Distributionen unterst?tzen das nicht. Da ist dann vor dem 1. 1. 1970 Schluss.

    Wenn dein PHP (und das Betriebssystem) also auf

    mktime(0,0,0,12,5,1930)

    einen Timestamp ungleich Null zur?ckgeben, dann kannst du auch date() drauf anwenden.

    Wenn nicht, musst du mit den Kalenderfunktionen von PHP arbeiten:

    http://de.php.net/manual/de/ref.calendar.php

    Diese Erweiterung funktioniert allerdings nicht auf Lima.

    Ich sehe aber auch den Sinn in deiner Fragestellung nicht. Was willst du damit erreichen? Eine Gruppe von Zahlen (0,0,0,12,5,1930) in ein sch?n formatiertes Datum umwandeln? Das geht doch mit den String-Funktionen oder sprintf() wesentlich einfacher.

    Man alopex, mach doch nicht alles so kompliziert. :P
    Ich glaube mein Tutorial sollte helfen :
    http://www.lima-city.de/tutorials.php?m=show&id=1829
    Bei fragen ruhig posten.

    MfG Lucas

  6. Man alopex, mach doch nicht alles so kompliziert. :P
    Ich glaube mein Tutorial sollte helfen :
    http://www.lima-city.de/tutorials.php?m=show&id=1829
    Bei fragen ruhig posten.


    Wie funktioniert deine Berechnung? Ich sehe weder die Ber?cksichtigung von Schaltjahren, noch von anderen Kalender-Besonderheiten. Schaltjahre gab es auch schon vor 1970.^^ Mag sein, dass es dir egal ist, ob man dein Alter um ein paar Tage verkehrt angibt, aber es gibt Anwendungen, da kommt es darauf an. Wozu brauch ich einen Kalender, der mir das falsche Datum anzeigt?

    Beitrag ge?ndert am 2.01.2006 19:49 von alopex


  7. Man alopex, mach doch nicht alles so kompliziert. :P
    Ich glaube mein Tutorial sollte helfen :
    http://www.lima-city.de/tutorials.php?m=show&id=1829
    Bei fragen ruhig posten.


    Wie funktioniert deine Berechnung? Ich sehe weder die Ber?cksichtigung von Schaltjahren, noch von anderen Kalender-Besonderheiten. Schaltjahre gab es auch schon vor 1970.^^ Mag sein, dass es dir egal ist, ob man dein Alter um ein paar Tage verkehrt angibt, aber es gibt Anwendungen, da kommt es darauf an. Wozu brauch ich einen Kalender, der mir das falsche Datum anzeigt?

    Beitrag ge?ndert am 2.01.2006 19:49 von alopex

    Ja, es kommt darauf an, was man damit machen will.
    Da er als Beispiel das Errechnen des Alters gegeben hat reicht diese "Art" aber.
    Ansonsten hast du recht. ;-)

    MfG Lucas

  8. Hei?t das wirklich Daten?^^ Nun gut, ich glaubs jetzt einfach mal^^

    Also jeder User soll, wie hier auch, das Format von Datum und Uhrzeit angeben k?nnen. Wenn zum Beispiel ein Geburtsdatum angezeigt werden soll, dass vor 1970 ist gibt es da nat?rlich Probleme. sprintf() geht da nat?rlich schon, aber man kann dass nat?rlich nur schlecht dynamisch machen, wie bei date(). Oder?


    Es hei?t so.

    Warum sollte das nicht dynamisch gehen? Du hast nur andere Formatierungscodes als mit date(). Schau dir mal die Manual-Seite von sprintf() an:

    http://de.php.net/manual/de/function.sprintf.php

    Es h?ngt lediglich davon ab, wie das Geburtsdatum als Variablen vorhanden ist. Das ISO-Datum geht beispielsweise so:

    $datum_formatiert = sprintf(
    '%4d-%02d-%02d %02d:%02d:%02d',
    $jahr,
    $monat,
    $tag,
    $stunde,
    $minute,
    $sekunde
    );
  9. Autor dieses Themas

    d**********r

    alopex schrieb:

    Hei?t das wirklich Daten?^^ Nun gut, ich glaubs jetzt einfach mal^^

    Also jeder User soll, wie hier auch, das Format von Datum und Uhrzeit angeben k?nnen. Wenn zum Beispiel ein Geburtsdatum angezeigt werden soll, dass vor 1970 ist gibt es da nat?rlich Probleme. sprintf() geht da nat?rlich schon, aber man kann dass nat?rlich nur schlecht dynamisch machen, wie bei date(). Oder?


    Es hei?t so.

    Warum sollte das nicht dynamisch gehen? Du hast nur andere Formatierungscodes als mit date(). Schau dir mal die Manual-Seite von sprintf() an:

    http://de.php.net/manual/de/function.sprintf.php

    Es h?ngt lediglich davon ab, wie das Geburtsdatum als Variablen vorhanden ist. Das ISO-Datum geht beispielsweise so:

    $datum_formatiert = sprintf(
    '%4d-%02d-%02d %02d:%02d:%02d',
    $jahr,
    $monat,
    $tag,
    $stunde,
    $minute,
    $sekunde
    );


    Das geht schon: Aber wie siehts dann aus, wenn nicht ferade das ISO Datum sondern 'h a' oder so?
    Das von Lucas9991 ist zwar ok, ber?cksichtigt aber keine Schaltjahre, wie alopex sagte.
    Nochmal zu meinem Problem:

    Ich habe eine Funktion:

    function date_format($day, $month, $year, $format = false) {
    
    if ($format != false) {
    
    return date($format, mktime(0,0,0,$day,...));
    
    }
    
    else {
    
    ...
    
    }


    Diese Funktion sollte dann das richtig sortierte Datum zur?ckgeben! Aber so gehts ja nicht (mit date, da vor 1970). Da $format variieren kann, sehe ich ein Problem in sprintf(), da man jeden einzelnen Buchstaben aus der date-Syntax (z.B. 'H' oder 'c') durch den entsprechenden Typ bei sprintf ersetzten. Das ginge soweit gut, aber was ist jetzt z.B mit 'c'? Da gehts so nicht!

    Beitrag ge?ndert am 3.01.2006 15:44 von danielkuhner

    Beitrag ge?ndert am 3.01.2006 15:44 von danielkuhner
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!