PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Mit Daten vor 1970 rechnen, aber wie?! (https://www.php-resource.de/forum/php-developer-forum/77768-mit-daten-vor-1970-rechnen-aber-wie.html)

ArSeN 07-11-2006 23:52

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 08-11-2006 00:45

Was hindert dich den Timestamp vor 1970 zu benutzen?, der reicht soweit ich weiß bis ins Jahr 1901 zurück.

ArSeN 08-11-2006 00:52

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 01: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.

ArSeN 08-11-2006 01:24

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ß

3DMax 08-11-2006 03:44

Zitat:

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 ;)
PHP-Code:

$timestamp=mktime(000111960);
echo 
'Timestamp: '.$timestamp.'<br />';
echo 
'Datum: '.date("M-d-Y"$timestamp).'<br />'

ausgabe:
Code:

Timestamp: -315622800
Datum: Jan-01-1960

negative timestamps stellen also grundsätzlich kein problem dar.

Zitat:

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?

ArSeN 08-11-2006 04:36

Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht.. :dontknow:

3DMax 08-11-2006 06:24

Zitat:

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?
Zitat:

o.g. code habe ich auf einem wamp-system mit winxp pro sp2 ausgeführt
winxp: WINDOWS XP

Meillo 08-11-2006 09:05

@3DMax: Mir geht es da auch nicht anders als ArSeN

Zitat:

Original geschrieben von ArSeN
Worauf soll sich das denn beziehn? Unter Windows gehts halt nich mit negativen? Verstehe die Frage nicht.. :dontknow:
Zitat:

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

closure 08-11-2006 09:19

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

3DMax 08-11-2006 13:07

Zitat:

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. ;)

Zitat:

... und könnte jemand vielleicht noch ein Windows 2k o.ä. testen
das würde mich auch mal interessieren. zur not muss ich einen wamp unter vmware einrichten...

jahlives 08-11-2006 14:28

@max
Also gemäss Manual ist das bei Win unmöglich :dontknow: Probier doch mal was ein
PHP-Code:

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
Zitat:

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

wahsaga 08-11-2006 14:31

http://www.php.net/manual/en/function.mktime.php:
Zitat:

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.

Trashar 08-11-2006 14:34

Zitat:

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 14: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


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:16 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG