Javascript: analyser une chaîne de Date, heure LOCALE de la zone
J'ai une chaîne de caractères représentant l'heure actuelle: 2015-11-24T19:40:00
. Comment puis-je convertir cette chaîne en Javascript pour obtenir une Date représentée par cette chaîne de caractères comme la HEURE LOCALE? En raison de certaines restrictions, je ne peux pas utiliser la bibliothèque moment
, mais jquery est autorisé. Je sais que quelqu'un a posé cette question, mais la réponse utilisé moment
Par exemple, si je lance le script en Californie, cette chaîne représenterait à 7 heures du soir, heure du pacifique, mais si je lance le script à new york, cette chaîne représenterait Heure de l'est?
J'ai essayé ce qui suit, mais Chrome et Firefox me donner des résultats différents:
var str = "2015-11-24T19:40:00";
var date = new Date(str);
Chrome consomme comme UTC temps (Tue Nov 24 2015 11:40:00 GMT-0800 (Pacific Standard Time)
),
mais Firefox consomme comme mon local PACIFIQUE temps (Tue Nov 24 2015 19:40:00 GMT-0800 (Pacific Standard Time)
)
J'ai essayé d'ajouter un "Z" à str
, à l'instar de ce var date = new Date(str+"Z");
, puis les deux navigateurs me donner l'heure UTC. Est-il une lettre semblable à "Z"
qui raconte tous les navigateurs (à moins de chrome, Firefox et Safari) pour analyser la chaîne que l'heure locale de la zone?
Vous devez vous connecter pour publier un commentaire.
L'analyse de la date de chaînes en utilisant le constructeur de Date ou la Date.parse (qui sont essentiellement la même chose), il est fortement recommandé contre.
Si la Date est appelée comme une fonction et passé un format ISO 8601 chaîne de date, sans un fuseau (comme 2015-11-24T19:40:00), vous pouvez obtenir l'un des résultats suivants:
Un objet Date a une valeur de temps UTC, et un décalage basé sur les paramètres du système. Lorsque vous envoyez une Date de sortie, ce que vous voyez est généralement le résultat de Date.le prototype.toString, qui est un dépendant de l'implémentation, lisible par l'homme chaîne de caractères représentant la date et l'heure, généralement dans un fuseau horaire basé sur les paramètres du système.
La meilleure façon d'analyser des chaînes date est de le faire manuellement. Si vous êtes assuré que le format est conforme et valide, puis l'analyse d'un ISO format de chaîne de caractères comme une date locale est aussi simple que:
JS:
Noter que l'analyse de l'ISO à l'aide de chaînes de Date.analyser accepte uniquement UTC, il n'accepte aucune autre fuseau horaire de désignation (en notant ci-dessus comportement si elle est manquante).
new Date()
toujours retourner un local heure actuelle? Si non, comment puis-je obtenir l'heure locale actuelle? Au moins pour moi test pour Chrome et Firefox. En gros, j'ai besoin d'obtenir la différence (en secondes) entre l'heure actuelle et à un moment donné, représentée par la chaîne, comme"2015-11-24T19:40:00"
new Date()
retourne un objet Date, avec sa valeur de temps de jeu à l'heure UTC actuelle et un décalage basé sur les paramètres du système. La façon dont c'est présenté est déterminée par la méthode dite: toString, toISOString, toUTCString, toLocaleTimeString etc.Une variation sur RobG la formidable réponse.
L'avantage de cette approche est qu'il s'applique automatiquement le bon nombre d'arguments transmis. Si c'est ce que vous voulez.
Où la Date est appelé en tant que constructeur, avec plus d'un argument, l'argument spécifié représentent heure locale.
J'ai aussi une façon beaucoup plus rapide que l'aide de la chaîne.split (), car nous savons déjà où les chiffres sont les suivants:
Cela va fonctionner avec et/ou sans le 'T' et 'Z' cordes et a encore des performances décentes. J'ai ajouté le Nombre explicite de conversion (plus rapide et mieux que parseInt) afin que cette compile également en caractères d'imprimerie.
Nombre