Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Daten vor 1970 rechnen, aber wie?!
Hallöchen!
Ich möchte prüfen, ob eine Person mindestens 40 Jahre alt ist. Das Problem ist, dass der Unix-Zeitstempel erst 1970 beginnt, und diese Person aber vorher geboren ist. Was soll ich tun? Ich find irgendwie keine ordentlichen datumsfunktionen für PHP, bei denen man das ohne Timestamp lösen könnte ?!
testererer 07-11-2006, 23:45 Was hindert dich den Timestamp vor 1970 zu benutzen?, der reicht soweit ich weiß bis ins Jahr 1901 zurück.
Naja schon aber voer 1970 ist er negativ. Wie soll ich denn damit umgehen? Ich hab sowas noch nie gemacht und daher kA wie ich des angehen soll. Windows unterstüzt z.B. auch garkeine negativen timestamps ;) Nagut das is jez nich mein Problem aber trotzdem. Was tu ich nu?
Shurakai 08-11-2006, 00:00 Naja, er gibt sein Geb.-Datum doch in der Form 1959 oder so ein, oder? Dann sag doch einfach wenn die Zahl < 1970 ist, ist es eh klar. Dann brauchst du garkeinen Timestamp mehr.
Aaaalso..
Jo! Du hast mich auf die entscheidende Idee gebracht. Ich war irgendwie vorher damit beschäftigt das mit den Schaltjahren auszuklügeln, und das es dann mit nem Timestamp trotzdem alles stimmt, und jetzt nachdem ich es nach ein paar Stunden endlich hinbekommen hab, komm ich nach dem lesen deines Posts auf die Idee, die Jahre einfach zu subtrahieren, und zu prüfen ob derjenige in dem Jahr schon geburtstag hatte. Funzt super! Ich danke dir! Ich danke euch beiden!
Gruß
Original geschrieben von ArSeN
Naja schon aber voer 1970 ist er negativ. Wie soll ich denn damit umgehen? Ich hab sowas noch nie gemacht und daher kA wie ich des angehen soll. Windows unterstüzt z.B. auch garkeine negativen timestamps ;)
$timestamp=mktime(0, 0, 0, 1, 1, 1960);
echo 'Timestamp: '.$timestamp.'<br />';
echo 'Datum: '.date("M-d-Y", $timestamp).'<br />';
ausgabe:
Timestamp: -315622800
Datum: Jan-01-1960
negative timestamps stellen also grundsätzlich kein problem dar.
PHP-Manual hat geschrieben:
Anmerkung: Der gültige Bereich eines Timestamp liegt typischerweise zwischen Fri, 13 Dec 1901 20:45:54 GMT und Tue, 19 Jan 2038 03:14:07 GMT. (Das entspricht den minimalen und maximalen Werten für einen vorzeichenbehafteten 32-Bit Integer). Unter Windows-Betriebssytemen ist dieser Bereich auf 01-01-1970 bis 19-01-2038 beschränkt.
diese aussage kann ich nachvollziehen, o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt :confused:
weiß jemand rat, worauf sich das handbuch bezieht?
Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht.. :dontknow:
Original geschrieben von ArSeN
Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht.. :dontknow:
was hast du daran nicht verstanden?
o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
winxp: WINDOWS XP
@3DMax: Mir geht es da auch nicht anders als ArSeN
Original geschrieben von ArSeN
Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht.. :dontknow:
diese aussage kann ich nachvollziehen, o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
weiß jemand rat, worauf sich das handbuch bezieht?
welchen Aussage kannst du nachvollziehen? Was bedeutet "nachvollziehen" - d.h. was meint er denn konkret bei einem Datum < 1970?
... und könnte jemand vielleicht noch ein Windows 2k o.ä. testen
Hi,
er hat nur ein "nicht" vergessen. Er kann die aussage nicht nachvollziehen,
da sein testsystem eben doch mit werten kleiner 1970 arbeiten kann.
Das soll aber laut docu nicht gehen.
greets
Original geschrieben von closure
er hat nur ein "nicht" vergessen. Er kann die aussage nicht nachvollziehen,
da sein testsystem eben doch mit werten kleiner 1970 arbeiten kann.
Das soll aber laut docu nicht gehen.
joh danke, genauso war es gemeint. ;)
... und könnte jemand vielleicht noch ein Windows 2k o.ä. testendas würde mich auch mal interessieren. zur not muss ich einen wamp unter vmware einrichten...
jahlives 08-11-2006, 13:28 @max
Also gemäss Manual ist das bei Win unmöglich :dontknow: Probier doch mal was ein
echo date("M-d-Y H:i:s",-1);
ergibt. Gibt das irgendwas wie 31.12.1969 23:59:59 ?
Ich habe deinen Timestamp mal in Tage umgerechnet. Ergibt Pi mal Auge 3653 Tage was in etwa einem Datum 10 Jahre vor Unix 0 entsprechen müsste. Scheint komischerweise korrekt zu funzen.
Bei mktime() steht noch folgendes im Manual, was wieder ein Widerspruch zu deinen Ergebnissen wäre
aus dem Manual
Windows: Negative Timestampwerte werden von keiner uns bekannten Windowsversion unterstützt. Aus diesem Grund ist der Gültigkeitsbereich für Jahresangaben auf Werte zwischen 1970 und 2038 eingeschränkt.
Gruss
tobi
http://www.php.net/manual/en/function.mktime.php:
Before PHP 5.1.0, negative timestamps were not supported under any known version of Windows and some other systems as well. Therefore the range of valid years was limited to 1970 through 2038.
Original geschrieben von wahsaga
http://www.php.net/manual/en/function.mktime.php:
und deswegen sollte man auch die englische manu bevorzugen :|
jahlives 08-11-2006, 13:35 @wahsaga
Du hast es mir bereits früher einmal in einem Thread gesagt: Nicht auf die dt Übersetzung des Manuals verlassen. Und trotzdem habe ich es wieder getan :rolleyes: Danke...
@max
Na dann hast mindestens PHP 5.1.0
Gruss
tobi
Wenn du so komisch fragst brauchste mich ja nich anschnauzen das ich nochmal nachhake, tzä :(
wahsaga hats ja schon gesagt: Ich benutz auch unter winxp pro sp2 (allerdings xampp) jedenfalls funzt es dort nicht, was auch kein Wunder ist da ich z.Zt. mit 4.x arbeite.
Gruß
Original geschrieben von ArSeN
Wenn du so komisch fragst brauchste mich ja nich anschnauzen das ich nochmal nachhake, tzä :( das war nicht "angeschnauzt", aber trotzdem sorry :beer:
in der tat ist der sinn meines postings ohne das wörtchen "nicht" etwas konfus ;)
ansonsten thx @all (wahsaga) - gut zu wissen, dass es erst mit PHP 5.1.0 funktioniert.
|