Chrome fuseau horaire de l'option à la Date d'.toLocaleString()

J'ai récemment découvert qu'il y est une nouvelle extension pour le JavaScript. Cela ajoute plusieurs fonctionnalités à la Date objet dans le toLocaleString, toLocaleDateString et toLocaleTimeString fonctions. Référence ici.

Je suis particulièrement intéressé par les timeZone option, qui prend en charge IANA/Olson fuseaux horaires, comme America/New_York ou Europe/London. Ce n'est actuellement pris en charge dans Google Chrome.

Les avis précédents, c'est que de travailler en JavaScript avec un autre fuseau horaire UTC ou de votre propre fuseau horaire local, on avait à utiliser une bibliothèque. Mais maintenant, il semble que cela commence à être intégrés directement dans le navigateur. Alors maintenant, vous pouvez faire ceci:

new Date().toLocaleString("en-US", {timeZone: "America/New_York"})

//output: "7/4/2013 5:15:45 PM"

Ou:

new Date().toLocaleString("en-NZ", {timeZone: "Pacific/Chatham",
                                    timeZoneName: "long"})

//output:  "7/5/2013 9:59:52 AM GMT+12:45"

Ou:

new Date().toLocaleString("en-GB", {timeZone: "Europe/London",
                                    timeZoneName: "short"})

//output:  "4/7/2013 22:18:57 United Kingdom Time"
//(strange time zone name, but ok)

C'est très cool, mais j'ai quelques questions:

  • Cela fait-il partie d'une nouvelle norme? Peut-être enterré quelque part dans ECMAScript 6? Ou est-ce juste quelque chose de personnalisé à google Chrome?
  • Pourquoi Google Chrome? Est-il pris en charge n'importe où ailleurs? Existe-il des plans de prise en charge n'importe où d'autre?
  • J'ai vérifié node.js qui utilise google Chrome, runtime JavaScript, mais il ne doit pas y travailler. Pourquoi pas?
  • Est le fuseau horaire de données accessible de toute autre manière que les fonctions que je suis inscrit? Si seulement disponible lorsque le formatage de chaînes de caractères, puis de faire les calculs sur la base des résultats peut être difficile.
  • C'est axée sur les résultats, mais comment pourrais-je l'utiliser pour l'entrée? Est-il un moyen de passer le temps de la zone dans le constructeur de la Date objet? J'ai essayé le suivant:

    //parsing it with a date and time
    new Date("2013-01-01 12:34:56 America/New_York")
    
    //passing it as a named option
    new Date(2013,0,1,12,34,56,{timeZone:"America/New_York"})

    Ni travaillé. Je ne pouvais pas trouver quelque chose dans les specs, donc je ne pense pas que cela existe (encore), mais s'il vous plaît dites-moi si je me trompe.

  • Le problème décrit dans ce post, créé par une faille dans le ECMAScript 5 spec, affecte encore la sortie, même lorsque les données appropriées dans le TZDB. Comment est-ce que les anciens et les nouveaux implémentations de la coexistence? On pourrait penser qu'il serait à l'ancienne, ou de la totalité d'une nouvelle manière. Par exemple, avec mon ordinateur est temps ensemble de la zone US, Heure de l'est:

    new Date(2004,10,7,0,0).toLocaleString("en-US",{timeZone:"America/New_York"})

    retourne "11/6/2004 11:00:00 PM". Il doit retourner à minuit, depuis que j'ai commencé à minuit et mon fuseau horaire local correspond au temps de sortie de la zone. Mais elle impose la condition d'entrée date au mauvais UTC, en raison de la ES5 question.

  • Puis-je s'attendre à ce que l'IANA mises à jour pour la TZDB que Google va pousser les mises à jour de Chrome qui contiennent les modifications?

InformationsquelleAutor Matt Johnson | 2013-07-04