2010-12-07 34 views
0

Le code suivant lorsqu'il est exécuté en utilisant l'environnement js interactif W3Schools (here):Comment javascript connaît-il le fuseau horaire d'une date en millisecondes?

var d1=new Date(1306796400000); 
document.write("Original form: " + d1); 

affiche le message suivant:

Original form: Tue May 31 2011 00:00:00 GMT+0100 (GMT Daylight Time) 

Mais ceci:

var d1=new Date(1231977600000); 
document.write("Original form: " + d1); 

affiche ce message:

Original form: Thu Jan 15 2009 00:00:00 GMT+0000 (GMT Standard Time) 

Je pensais que la valeur millisecondes était juste millisecondes depuis 01/01/1970 en UTC. Mais il semble qu'il contienne un drapeau pour le fuseau horaire. Quelqu'un peut-il dire quel est le format de la valeur en millisecondes?

Merci d'avance.

Répondre

4

Il n'y a pas de fanion spécial. C'est juste Daylight Savings en vigueur.

+0

C'était une bonne prise. – cwallenpoole

+0

Ahh! Cela a du sens et une réponse concise aussi. – Neil

+0

Pourriez-vous élaborer plus? Le Wiki lui-même n'aide pas beaucoup ~ – DerekY

0

Les millisecondes ne contiennent aucun indicateur de ce type. Toutefois, le fuseau horaire de l'objet de date que vous créez à l'aide de new Date(n) dépend des paramètres régionaux de votre interpréteur/navigateur. Pour moi:

var d = new Date(1231977600000); 

d.toString(); 
// "Wed Jan 14 2009 17:00:00 GMT-0700 (Mountain Standard Time)" 

d.toUTCString(); 
// "Thu, 15 Jan 2009 00:00:00 GMT" 
0

Ce n'est pas le cas. Il utilise les informations de fuseau horaire local, y compris la date de transition de l'heure d'été. D'où la différence dans

javascript:alert([new Date(1306796400000),new Date(1231977600000)].join('\n')) 

Définissez vos paramètres régionaux sur le fuseau horaire DST-moins et la différence disparaîtra.

0

Javascript est exécuté à l'intérieur du navigateur de l'utilisateur, qui à son tour, lit le fuseau horaire actuel du système d'exploitation de l'utilisateur. C'est ainsi qu'il peut "deviner" le bon fuseau horaire.