webForumDet fria alternativet

Tid i flera tidzoner?

JavaScriptur Javascript

8 svar · 316 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Går det med javascript att visa tid i olika tidzoner? Jag vet hur man visar den lokala klockans tid i ett inputfält men går det att visa den nuvarande tiden i tex New York. Rätt tid måste visas oberoende om du surfar från en dator i USA eller i sverige.

------------------
---------------------
http://www.absolut.nu
---------------------

jepsOMedlem sedan mars 2001484 inlägg
#2

Rätta mig om jag har fel, men läser inte JavaScript av Windows-klockan när den visar aktuell tid?

Om scriptet ska bli helt idiotsäkert är serverbaserad programmering att föredra.

------------------
/ jeps0

JohnsenMedlem sedan juli 2000836 inlägg
#3

Som sagt så hämtas tiden från operativsystemet, men man vet alltid vad GMT är.

Så om du vet när olika ställen byter till sommartid och vad skillnaden är i tid mot GMT, går det att räkna ut.

Exempel: Washington DC ligger 5 timmar efter GMT och har sommartid mellan 1 april, kl: 02:00 och 28 oktober, kl: 03:00 (vilket ger 4 timmar efter GMT).

Kolla på nedanstående:

<script>

var nowYear=new Date().getFullYear();
var corrSE= ((new Date().getTime()-new Date("October 28, "+nowYear+" 03:00:00").getTime())<0 && (new Date("March 25, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? 2 : 1
var corrUS= ((new Date().getTime()-new Date("October 28, "+nowYear+" 02:00:00").getTime())<0 && (new Date("April 1, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? -4 : -5
var corrGB= ((new Date().getTime()-new Date("October 28, "+nowYear+" 03:00:00").getTime())<0 && (new Date("March 25, "+nowYear+" 01:00:00").getTime()-new Date().getTime())<0)? 1 : 0

var now= new Date().toGMTString();
var nowString=now.substring(0,now.length-3)
var GMTdate= new Date(nowString)
var SEdate= new Date(nowString)
var USdate= new Date(nowString)
var GBdate= new Date(nowString)

SEdate.setHours(SEdate.getHours()+corrSE)
USdate.setHours(USdate.getHours()+corrUS)
GBdate.setHours(GBdate.getHours()+corrGB)

document.write("Klockan är (timme) på resp ort:"+"<br>")
document.write("<b>GMT:</b> "+GMTdate.getHours()+"<br>")
document.write("<b>Stockholm:</b> "+SEdate.getHours()+"<br>")
document.write("<b>Washington DC:</b> "+USdate.getHours()+"<br>")
document.write("<b>London:</b> "+GBdate.getHours()+"<br>")

</script>

------------------
- J-O-H-N-S-E-N -
------------------

mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

Man tackar för den fina lösningen. Jag läste mig till att det skulle gå men fick inte till syntaxen. Jag är självlärd på javascript så ibland blir det fel.

<kod>
var corrSE= ((new Date().getTime()-new Date("October 28, "+nowYear+" 03:00:00").getTime())<0 && (new Date("March 25, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? 2 : 1
var corrUS= ((new Date().getTime()-new Date("October 28, "+nowYear+" 02:00:00").getTime())<0 && (new Date("April 1, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? -4 : -5
var corrGB= ((new Date().getTime()-new Date("October 28, "+nowYear+" 03:00:00").getTime())<0 && (new Date("March 25, "+nowYear+" 01:00:00").getTime()-new Date().getTime())<0)? 1 : 0
</kod>

Jag är inte helt med på vad (x : -1, -5, 0) den sista nollan gör sist i koden? Vad styr du med denna?

Hur som helst tack för att du löste mitt problem. Jag är nästan med i matchen ;-)

------------------
http://www.absolut.nu

JohnsenMedlem sedan juli 2000836 inlägg
#5

Nu är jag inte med, var står x : -1, -5, 0 ?

------------------
- J-O-H-N-S-E-N -
------------------

mattiasnordinMedlem sedan maj 20012 080 inlägg
#6

Jag var lite otydlig. Hoppas att nedan fungerar bättre...

[kod]
var corrUS= ((new Date().getTime()-new Date("October 28, "+nowYear+" 02:00:00").getTime())<0 && (new Date("April 1, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? -4 : -5
[kod]

(Jag undrar över sista -5)

------------------
http://www.absolut.nu

mattiasnordinMedlem sedan maj 20012 080 inlägg
#7

Vad sne jag blir! Varför kan man inte FÖRHANDSGRANSKA innan man klickar posta? Då slipper man alla nybörjarfel som tex jag genererar. -huuuummm-

var corrUS= ((new Date().getTime()-new Date("October 28, "+nowYear+" 02:00:00").getTime())<0 && (new Date("April 1, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? -4 : [red]-5[/red]

------------------
http://www.absolut.nu

@ndersMedlem sedan juni 200032 969 inlägg
#8

litet tips som är lite ot:

du kan alltid gå in och redigera ett inlägg i efterhand. det gör du genom att klicka på ikonen med pennan precis ovanför aktuellt inlägg. :)

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

JohnsenMedlem sedan juli 2000836 inlägg
#9

var variabel= ( värde<10 )? 2 : 1 är samma sak som att skriva:
var variabel
if( värde<10 ){variabel= 2}
else{variabel= 1}

Nedanstående betyder alltså:
corrSE är lika med 2, om vi befinner oss mellan 25/4 i år och 28/10 i år. Annars är corrSE lika med 1
(Dvs. förhållandet till GMT om vi har sommartid eller inte).

var corrSE= ((new Date().getTime()-new Date("October 28, "+nowYear+" 03:00:00").getTime())<0 && (new Date("March 25, "+nowYear+" 02:00:00").getTime()-new Date().getTime())<0)? 2 : 1

------------------
- J-O-H-N-S-E-N -
------------------

136 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)