Avatar billede etif Nybegynder
09. december 2005 - 13:45 Der er 11 kommentarer

Symetrisk konvertering af sqltimestamps ?

Jeg har et webprojekt med nogle servlets, som gemmer en dato som et hidden field på html-sider, der sendes til klienterne, til brug for sammenligning med en dato jeg har gemt i min database.

Problemet er at klienterne kører på en Citrix-server, som kører GMT, mens web-serveren kører GMT+1, det ser ud til at datoen automatisk bliver konverteret til GMT-tid, når den skrives, men ikke tilbage igen når den skal læses igen inde i servletten.

Datoen er en java.sql.timestamp, når den skrives anvender jeg tostring og når den læses anvender jeg valueof.

Har nogen en ide om hvad der skal til for at lave en symetrisk konvertering, så jeg kan sammenligne datoer på tværs af tidszoner.
Avatar billede arne_v Ekspert
09. december 2005 - 14:13 #1
getTime returnerer millisekunder siden 1970 og er så vidt jeg ved
altid i GMT

så måske
Avatar billede etif Nybegynder
09. december 2005 - 15:08 #2
Det har jeg desværre prøvet.
Men det gav to forskellige resultater på de to klienter, selv om det byggede på den samme dato. Der var præcis 3600000 millisekunder imellem de to værdier.
Avatar billede arne_v Ekspert
10. december 2005 - 21:43 #3
det skal kunne virke medmindre en maskine er forkert opsat (som f.eks.
at sætte hrdware clock til DK tid og tidszone til GMT)

men vi kommer nok ikke videre uden betydeligt flere detaljer om kode
og kontekst
Avatar billede etif Nybegynder
12. december 2005 - 09:17 #4
Jeg har en ide om det kan være problemet, men hvordan checker man det?
Avatar billede arne_v Ekspert
12. december 2005 - 13:20 #5
hvis den viser DK tid men siger den er i GMT
Avatar billede arne_v Ekspert
31. december 2005 - 13:59 #6
kommet videre ?
Avatar billede etif Nybegynder
02. januar 2006 - 09:06 #7
Ja, jeg har nu fundet ud af at problemet skyldes at der kører med to forskellige java versioner 4.1 på web-serveren og 5.0 på klienten. I java 5.0 har man ændret default konvertering af timestamps og det er årsagen til problemet. Da jeg ikke skal regne på datoerne, men kun skal bruge dem til at kontrollere, om der er rettet siden sidst læste recorden, vil jeg bare lade sql-serveren caste timestampet til tekst og så sammenligne tekster i stedet.
Avatar billede arne_v Ekspert
02. januar 2006 - 11:08 #8
MySQL version 4.1 og 5.0 ?
Avatar billede etif Nybegynder
02. januar 2006 - 11:25 #9
Nej jre-versioner.
Avatar billede arne_v Ekspert
02. januar 2006 - 12:10 #10
jeg har aldrig hørt om Java 4.1 ??
Avatar billede etif Nybegynder
02. januar 2006 - 12:23 #11
Nej det er selvfølgelig 1.4 og 1.5 jeg mener. Det har vist været for lang en juleferie.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester