"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

falsches geburtsdatum?

Friedel 28.04.2005 - 13:29 689 13
Posts

Friedel

Dr. Umbringer
Avatar
Registered: Apr 2002
Location: Ruhrpott
Posts: 1452
hab am 20.10.1969 geburtstag, wird aber als 31.12.1969 angezeigt.
wenn ichs auf 1970 ändere wird der 20.10. angezeigt, zurück auf 1969 und es ist wieder der 31.12.
hmmm, bug?
Bearbeitet von Friedel am 28.04.2005, 13:53

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25430
vbulletin ist nicht auf so alte leute auslegt :)

das datumfeld wird "nur" als unixtimestamp abgespeichert (0 == 1. 1. 1970). dh: du wirst dich mit 1970 begnügen müssen.

Friedel

Dr. Umbringer
Avatar
Registered: Apr 2002
Location: Ruhrpott
Posts: 1452
Zitat von mat
vbulletin ist nicht auf so alte leute auslegt :)
:eek: :D
Zitat von mat
das datumfeld wird "nur" als unixtimestamp abgespeichert (0 == 1. 1. 1970). dh: du wirst dich mit 1970 begnügen müssen.
najaa, ist ja nicht so tragisch. :)

Klingone

Big d00d
Registered: Aug 2000
Location: Regensburg, DE
Posts: 244
Ups... ist mir die ganzen Jahre noch gar nicht aufgefallen - V5-Feature-Request ? :D

Na ja, bei mir liegt er wenigstens nur 26 Tage daneben ... 05.12.1969...

Klingi

derelict

Legend
Legend
Avatar
Registered: May 2004
Location: outside
Posts: 365
Zitat von mat
das datumfeld wird "nur" als unixtimestamp abgespeichert (0 == 1. 1. 1970). dh: du wirst dich mit 1970 begnügen müssen.

Nö, als MySQL Date typ, und selbst ein Timestamp würde signed sein. Das erklärt den Fehler nicht, der übrigends in der vbulletin-referenzimplementierung nicht enthalten ist.

MajorTom

The question is....
Avatar
Registered: May 2002
Location: who cares?
Posts: 1751
Ja, und früher gabs ihn auch nicht (da war mein GBD korrekt ersichtlich) - aber in meinem Alter ist man eh' schon bald froh, wenn man ein paar Jährchen jünger gemacht wird.... ;)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25430
Zitat von creAlict
Nö, als MySQL Date typ, und selbst ein Timestamp würde signed sein. Das erklärt den Fehler nicht, der übrigends in der vbulletin-referenzimplementierung nicht enthalten ist.
unix timestamp ist unsigned, so ist er definiert. wenn du von den rückgabewerten von php sprichst, die signed sind, dann solltest du dir vl die datentypen dieser sprache nochmal ein wenig ansehen.

weil du grade vb-"referenz"-implementation ansprichst.. ja, das birthday dbfeld ist ein DATE, aber das ist sinnlos wenn es dann folgendermaßen formatiert wird:
Code: PHP
$bday = explode("-",$userinfo[birthday]);
if (date("Y")>$bday[0] and $bday[0]>1901 && $bday[0]!='0000') {
  $birthday = @date($calformat1,mktime(0,0,0,$bday[1],$bday[2],$bday[0])); }
dh: die geburtstagsdarstellung im profile hat _niemals_ funktioniert.

MajorTom

The question is....
Avatar
Registered: May 2002
Location: who cares?
Posts: 1751
öhm - möcht' mich ja nicht einmischen (kenn' mich auch nicht wirklich aus ;))

- aber was immer "funktioniert" bedeutet - dortgestanden hat das richtige Geburtsdatum bei mir früher schon!

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25430
watchout, derelict?

derelict

Legend
Legend
Avatar
Registered: May 2004
Location: outside
Posts: 365
Zitat
http://at2.php.net/date
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.

PHP kennt im Grunde keine "richtigen" Datentypen.

Zugegeben, die PHP-Datumsfunktionen sind müll, aber für den angesprochenen Fall funktionieren sie (unter unix-systemen). Teste den von dir geposteten Codeteil mit einem datum <1970, du wirst sehen es funktioniert.

Oder läuft dieses Forum mittlerweile unter Windows :confused:

Der Standard-Timestamp ist 32Bit signed integer, mit einem Wertebereich von 1901-2038.
Neuere Systeme und Sprachen nutzen deswegen einen 64Bit signed Integer.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25430
ja, das forum läuft mittlerweile unter windows :rolleyes:

ich habs mir jetzt nochmal genauer angeschaut und der fehler liegt wahrscheinlich an php, vl auch am os/os setup. die funktion mktime() gibt maximal einen timestamp bis 31.12.69 zurück. mal schauen..

derelict

Legend
Legend
Avatar
Registered: May 2004
Location: outside
Posts: 365

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
btw: Garbage ist 109J alt, da keine Jahreszahl eingegeben war.
Kleinigkeit, ich weiß...

WONDERMIKE

Administrator
kenough
Avatar
Registered: Jul 2001
Location: Mojo Dojo Casa H..
Posts: 10683
der macht auch nochmal mindestens 100 :D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz