[Javalist] 1891.10.01 nem létezik ?
Keresztes Jozsef
jkeresztes at vati.hu
2011. Dec. 1., Cs, 13:28:34 CET
Sziasztok !
Az Apache Wicket keretrendszer DateTextField komponensével van egy kis gond, kíváncsi vagyok találkoztatok-e a problémával.
A történet úgy kezdődött hogy adatbázisba beírtuk az 1111.11.11-es dátumot Toad-dal, vagyis kézzel.
Amikor ez a dátum megjelent a webes felületen egy DateTextField-ben 1111.11.17-et láttam. Nem értettem és elkezdtem nyomozni.
Azt vizsgáltam hogy a felületen a dátum mezőbe írt érték hogy kerül be a mező model-jébe,
vagyis a form submit-ja után kiolvastam és rögtön kiirattam a model tartalmát (java.util.Date), kiiktatva az adatbázist.
Az eredmény a következő:
9999.12.31 - 1891.10.02 közötti dátumok tökéletesen működnek (mekkora mázli hogy a rendszereinkbe 1900.01.01 minden dátumra a minimum)
1891.10.01 -et pötyögve a mezőbe, azt a hibaüzenetet adja hogy ilyen dátum nem létezik !!! Mintha 2011.12.32 -t írnál a mezőbe.
0001.01.01 - 1891.09.30 között viszont a dátum csúszik, ami azt jelenti hogy minél régebbi a dátum annál nagyobb a napokban
mért csúszás, 1891 körül 1 nappal kisebbet kapunk mint amit a user begépelt,
de 1111-es év körül már 6 nappal kisebbet. A jelenséget azóta sem értem mi a túrós ez, neten is volt valami ilyesmi, de nem tiszta a dolog,
még az lenne hátra hogy verziót kéne frissíteni. Ami érdekes hogy az Apache Wicket felhasználja a "Joda Time"-ot, az ilyen dátum cuccokhoz,
viszont a Joda verzió lecserélésével a hiba nem hárítható el.
A neten is rákeresvén 1891.10.01-re, gondoltam találok infót arra vonatkozóan hogy valami fekete lyukba kerülhettünk és dátumugrás történt, de ilyenről sem a net,
se a fiaim történelemkönyvei nem számolnak be :)
Ha van hozzáfűznivalótok a dologhoz szívesen meghallgatom.
Joe
További információk a(z) Javalist levelezőlistáról