[java(script)] tijdzone client achterhalen

Pagina: 1
Acties:

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Een webapplicatie die ik gemaakt heb is afhankelijk van de tijdzone waarin clienten zitten. Dit heeft ermee dat er server-side taken worden uitgevoerd voor clienten, op een bepaald (lokaal) tijdstip voor een client. Dus als een client in +0100 GMT zit, en om 20:00 een taak uitgevoerd wil hebben, moet de server -als deze in +0000 GMT zit- de taak om 19:00 uitvoeren.

Ik lees de tijdzone nu uit mbv javascript, maar gezien het feit dat ik met IE niet kan achterhalen of het DST is (Daylight Savings time), krijg ik een foutieve tijdzone door. De server heb ik mbv java geimplementeerd. De tijd die de server hanteert bij het "plannen" van taken is GMT zonder DST correctie.

Hoe kan ik op een betrouwbare manier (cross-browser) de tijdzone achterhalen?

Ik dacht zelf aan de volgende mogelijkheden, maar weet niet exact wat er mogelijk is, en wat gemakkelijk is:

- Java applet die een waarde doorgeeft aan javascript
- Java applet dat mbv een direct verbinding naar de server de tijdzone "koppelt" (opslaat) aan de huidge PHP sessie.
- Flash filmpje dat de tijdzone uitleest, en deze mbv een XMLSocket aan de server doorgeeft.

In alle gevallen ben ik afhankelijk van plugins. Wat is aan te raden/betrouwbaar ?

Bij voorbaat dank.

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 13-09-2022
Met java kan het met iets als:
code:
1
TimeZone dezeZone = Calendar.getInstance().getTimeZone();

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 13-09-2022
Met java kan het met iets als:
code:
1
TimeZone dezeZone = Calendar.getInstance().getTimeZone();

zie ook:
http://java.sun.com/j2se/1.4/docs/api/java/util/Calendar.html
http://java.sun.com/j2se/1.4/docs/api/java/util/TimeZone.html

Verwijderd

k zou es kijken naar LCID 's die zijn wel handig

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Op donderdag 11 april 2002 16:46 schreef Xanthus het volgende:
Met java kan het met iets als:
code:
1
TimeZone dezeZone = Calendar.getInstance().getTimeZone();

zie ook:
http://java.sun.com/j2se/1.4/docs/api/java/util/Calendar.html
http://java.sun.com/j2se/1.4/docs/api/java/util/TimeZone.html
Ik weet hoe ik het in java kan opvragen. Ik zit meer met de vraag: wat is qua implementatie het slimste, technisch gezien weet ik hoe het te "maken" is.

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Op donderdag 11 april 2002 16:46 schreef Zoepnek het volgende:
k zou es kijken naar LCID 's die zijn wel handig
Volgens MSDN is dit een property van een object in ASP's vbscript. Dit is dus server side, en dat bedoel ik niet. Ik heb het over client side.

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Bestaat er ook een mogelijkheid om een numerieke Timezone op te vragen in Java 1.3? Op mijn werk wordt daar nog gebruik van gemaakt en we kunnen een dergelijke functionaliteit goed gebruiken!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

javascript:
code:
1
2
3
4
var vandaag = new Date();
var uur1 = vandaag.getHours();
var uur2 = vandaag.getUTCHours();
var verschil = uur1 - uur2;

En voila je hebt je tijdzone :P
Eventueel met xmlhttp + js doorsturen naar server.

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

André schreef op 04 mei 2004 @ 16:15:
javascript:
code:
1
2
3
4
var vandaag = new Date();
var uur1 = vandaag.getHours();
var uur2 = vandaag.getUTCHours();
var verschil = uur1 - uur2;

En voila je hebt je tijdzone :P
Eventueel met xmlhttp + js doorsturen naar server.
Wellicht een TE domme vraag:

Maar kan het bovenstaande ook met Java 1.3 zelf?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • B-Man
  • Registratie: Februari 2000
  • Niet online
André schreef op 04 mei 2004 @ 16:15:
javascript:
code:
1
2
3
4
var vandaag = new Date();
var uur1 = vandaag.getHours();
var uur2 = vandaag.getUTCHours();
var verschil = uur1 - uur2;

En voila je hebt je tijdzone :P
Eventueel met xmlhttp + js doorsturen naar server.
Dit is echter zonder DST correctie zo te zien...

Ik gebruik nu zelf het volgende:
code:
1
2
3
4
5
var d = new Date();
var zone = -d.getTimezoneOffset();
dston =  new Date('April 4, 2004 2:59:59');
dstoff = new Date('october 31, 2004 2:59:59');
if (d > dston && d < dstoff ) zone = zone - 60;

[ Voor 29% gewijzigd door B-Man op 04-05-2004 21:04 ]


  • B-Man
  • Registratie: Februari 2000
  • Niet online
Deddiekoel schreef op 04 mei 2004 @ 20:41:
[...]

Wellicht een TE domme vraag:

Maar kan het bovenstaande ook met Java 1.3 zelf?
Met
code:
1
Calendar.getInstance().getTimeZone().getRawOffset()
kun je de tijdzone in milliseconden vanaf UTC opvragen

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

B-Man schreef op 04 mei 2004 @ 21:08:
[...]

Met
code:
1
Calendar.getInstance().getTimeZone().getRawOffset()
kun je de tijdzone in milliseconden vanaf UTC opvragen
Die functie geldt voor java 1.4.2

Mijn probleem is dat de klasse moet werken met een 1.3.1 JVM. Wat ik heb begrepen (ik heb de originele klasse niet gemaakt) is dat Java 1.3 de getTimeZone functie zoals deze is gebruikt niet snapt (klasse is gemaakt op een machine met Java 1.4.2). Het is de bedoeling om een timezone waarde in de vorm "+0001" (oid) te krijgen op basis van de server waarop het draait.

Wat ik dus zoek is een manier om bovenstaande te krijgen in Java 1.3!

Edit:
Het bovenstaande lijkt dus wel te werken. Ik heb nu een klasse die +1 of -1 terug geeft. Daar is makkelijk genoeg de juiste vorm van te maken (is daar ook een functie voor? om millisec naar uur weergave te converteren?). Alleen is ook deze klasse gemaakt met NetBeans 3.6 en dus op een Java 1.4 machine. Wel heb ik de 1.3.1 documentatie gebruikt dus het zou moeten werken....

[ Voor 26% gewijzigd door Deddiekoel op 05-05-2004 14:03 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2

Pagina: 1