Je veux convertir la chaîne de date Date
en javascript, utilisez ce code:
var date = new Date('2013-02-27T17:00:00');
alert(date);
'2013-02-27T17:00:00'
est l'heure UTC dans l'objet JSON du serveur.
Mais le résultat du code ci-dessus est différent entre Firefox et Chrome:
Firefox renvoie:
Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)
Chrome renvoie:
Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time)
C'est différent 1 jour, le résultat correct auquel je m'attendais est le résultat de Chrome.
Code de démonstration: http://jsfiddle.net/xHtqa/2/
Comment puis-je résoudre ce problème pour obtenir le même résultat des deux?
javascript
date
timezone
cuongle
la source
la source
Date {Wed Feb 27 2013 17:00:00 GMT+0000 (GMT)}
pour moi dans les deux (Linux).Réponses:
Le format correct pour UTC serait
2013-02-27T17:00:00Z
(Z est pour l'heure Zulu). AjoutezZ
si non présent pour obtenir la chaîne de date et heure UTC correcte.la source
Oui, malheureusement, les algorithmes d'analyse des dates dépendent de l'implémentation. D'après la spécification de
Date.parse
(qui est utilisée parnew Date
):Pour empêcher le
Date
constructeur d' utiliser (peut-être) le fuseau horaire local, utilisez une chaîne datetime avec des informations sur le fuseau horaire, par exemple"2013-02-27T17:00:00Z"
. Cependant, il est difficile de trouver un format fiable analysé par chaque navigateur - le format ISO n'est pas reconnu par IE <8 (voir JavaScript: Quels navigateurs prennent en charge l'analyse de la chaîne de date ISO-8601 avec Date.parse ). Mieux, utilisez un horodatage unix, c'est-à-dire des millisecondes depuis l' époque unix , ou utilisez une expression régulière pour décomposer la chaîne en ses parties, puis les insérerDate.UTC
.la source
J'ai trouvé une chose ici. Il semble que la console Firefox Inspector native puisse avoir un bogue: si j'exécute "new Date ()" dans l'Inspecteur natif, il affiche une date avec un fuseau horaire incorrect, les paramètres régionaux GMT, mais exécutant la même commande dans la console d'extension Firebug, la date illustré utilise mon fuseau horaire correct (GMT-3: 00).
la source
Essayez d'utiliser moment.js. Cela fonctionne très bien et de la même manière avec tous les navigateurs. est livré avec de nombreuses options de formatage. utilisez moment ('date'). format ("") au lieu de New Date ('date')
la source
Remarqué que FireFox ne retournait pas le même résultat que Chrome. On dirait que le format que vous utilisez dans kendo.toString pour la date fait une différence.
Le dernier résultat de la console est ce dont j'avais besoin:
la source