Je recherche une fonction pour convertir la date dans un fuseau horaire en un autre.
Il a besoin de deux paramètres,
- date (au format "2012/04/10 10:10:30 +0000")
- chaîne de fuseau horaire ("Asia / Jakarta")
La chaîne de fuseau horaire est décrite dans http://en.wikipedia.org/wiki/Zone.tab
Y a-t-il un moyen facile de faire ceci?
javascript
timezone
Rizky Ramadhan
la source
la source
Réponses:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
la source
toLocaleString
, mais elle montre très incorrectement le passage de cette chaîne dans leDate
constructeur. Cela demande des ennuis. L'analyseur de chaîne de date n'est pas requis pour accepter des formats spécifiques aux paramètres régionaux et l'entrée serait traitée comme si elle se trouvait dans le fuseau horaire local. Ne fais pas ça. Utilisez simplement la sortie de chaîne du premiertoLocalString
appel.Pour les utilisateurs de moment.js , vous pouvez désormais utiliser moment-timezone . En l'utilisant, votre fonction ressemblerait à ceci:
la source
Date.prototype.toLocaleString
.Volé sans vergogne à: http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329
cette fonction est utile pour calculer la valeur du fuseau horaire en fournissant le nom d'une ville / pays et la valeur de décalage
la source
La plupart des navigateurs de bureau (non mobiles) à l'exception de Safari prennent en charge la fonction toLocaleString avec des arguments, les navigateurs plus anciens ignorent généralement les arguments.
la source
toLocaleStringSupportsLocales()
implémentation qui vous permet de vérifier de manière fiable la prise en charge.D'accord, je l'ai trouvé!
J'utilise timezone-js . c'est le code:
la source
Si vous ne souhaitez pas importer une grande bibliothèque, vous pouvez simplement utiliser Intl.DateTimeFormat pour convertir les objets Date en différents fuseaux horaires.
Les compensations, l'heure d'été et les changements dans le passé seront pris en charge pour vous.
la source
toLocaleString
a une implémentation incohérente, et cela fonctionne à partir d'IE11.formatter
objet, vous obtenez: `` La valeur de l'option 'Asia / Jakarta' pour 'timeZone' est en dehors de la plage valide. Attendu: ['UTC'] ``Je l'ai !
Je voulais forcer la date affichée = date du serveur, peu importe les paramètres locaux (UTC).
Mon serveur est GMT-6 -> new Date (). GetTimezoneOffset () = 360.
la source
Vous pouvez utiliser la méthode toLocaleString () pour définir le fuseau horaire.
Pour l'Inde, vous pouvez utiliser "Indien / Noël" et voici les différents fuseaux horaires,
la source
toLocaleString
solution a déjà été donnée il y a 4 ans .Si vous avez juste besoin de convertir des fuseaux horaires, j'ai téléchargé une version allégée de l' instant-timezone avec juste la fonctionnalité minimale. Ses données ~ 1 Ko +:
la source
Définissez une variable avec l'année, le mois et le jour séparés par des symboles «-», plus un «T» et l'heure en HH: mm: ss, suivi de +01: 00 à la fin de la chaîne (dans mon cas, le fuseau horaire est +1). Utilisez ensuite cette chaîne comme argument pour le constructeur de date.
la source
Je dois noter que je suis limité quant aux bibliothèques externes que je peux utiliser. moment.js et timezone-js n'étaient PAS une option pour moi.
L'objet js date que j'ai est en UTC. J'avais besoin d'obtenir la date ET l'heure de cette date dans un fuseau horaire spécifique («America / Chicago» dans mon cas).
UTC a actuellement 6 heures d'avance sur 'Amérique / Chicago'. La sortie est:
la source
new Date();
retourner le fuseau horaire local, pas UTCIf no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings.
Voici mon code, il fonctionne parfaitement, vous pouvez essayer avec la démo ci-dessous:
la source
currentDateTimeCentralTimeZone.getHours()
? Sans cela, cela fonctionnerait et revient à chercher la réponse de stack27 stackoverflow.com/a/40809160/1404185Vous pouvez également essayer cela pour convertir le fuseau horaire de la date en Inde:
la source
Après avoir parcouru beaucoup de choses, y compris les liens de cette page, j'ai trouvé cet excellent article, en utilisant le fuseau horaire du moment:
https://www.webniraj.com/2016/11/23/javascript-using-moment-js-to-display-dates-times-in-users-timezone/
Pour le résumer:
Obtenez le fuseau horaire de l'utilisateur
Retours par exemple: Fuseau horaire: Europe / Londres
Définir le fuseau horaire utilisateur par défaut
Définir un fuseau horaire personnalisé
Convertir la date / l'heure en fuseau horaire local, en supposant que la date / heure d'origine est en UTC
Retours: dimanche 25 décembre 2016, 7h00
Convertir la date / l'heure en heure de Los Angeles
Retours: samedi 24 décembre 2016, 23h00
Convertir de Los Angeles à Londres
Retour: dimanche 25 décembre 2016, 15h00
la source
Vous pouvez également utiliser https://www.npmjs.com/package/ctoc_timezone
Il a une implémentation et une personnalisation de format très simples.
Modification du format dans toTimeZone:
CtoC.toTimeZone(new Date(),"EST","Do MMM YYYY hh:mm:ss #{EST}");
Production :
28th Feb 2013 19:00:00 EST
Vous pouvez explorer plusieurs fonctionnalités dans le document.
la source
il existe un module npm appelé 'timezones.json' que vous pouvez utiliser pour cela; il se compose essentiellement d'un fichier json avec des objets contenant des informations sur l'heure d'été et le décalage, ....
pour asia / jakarta, il pourrait retourner cet objet:
Vous pouvez le trouver ici:
https://github.com/dmfilipenko/timezones.json
https://www.npmjs.com/package/timezones.json
j'espère que c'est utile
la source
Les gens familiers avec le
java.time
package java 8 , oujoda-time
adoreront probablement le nouvel enfant sur le bloc: la bibliothèque js-joda .Installer
Exemple
Dans la vraie nature java, c'est assez verbeux lol. Mais, étant une bibliothèque java portée, en particulier compte tenu du fait qu'ils ont porté des cas de test de 1800 '', cela fonctionne également extrêmement bien.
La manipulation chrono est difficile. C'est pourquoi de nombreuses autres bibliothèques sont boguées dans les cas marginaux. Moment.js semble avoir les bons fuseaux horaires, mais les autres bibliothèques js que j'ai vues, notamment
timezone-js
, ne semblent pas dignes de confiance.la source
Je l'ai récemment fait dans Typescript:
J'utilise le format "en-UK" car il est simple. Aurait pu être "en-US" ou tout ce qui fonctionne.
Si le premier argument correspond à votre fuseau horaire local et que la seconde est votre fuseau horaire cible, il renvoie un objet Date avec le décalage correct.
la source
J'avais du mal à utiliser Moment Timezone . J'ajoute cette réponse juste si quelqu'un d'autre fait face au même problème. J'ai donc une chaîne de date
2018-06-14 13:51:00
provenant de monAPI
. Je sais que cela est stocké dansUTC
mais la chaîne ne parle pas d'elle-même.Je laisse le fuseau horaire du moment savoir de quel fuseau horaire cette date provient en faisant:
Maintenant, je voudrais le convertir en un fuseau horaire spécifique en faisant:
la source
Il vous suffit de définir le fuseau horaire de votre pays de désir et vous pouvez facilement l'afficher en HTML en le mettant à jour en utilisant la fonction SetInteval () après chaque minute. format de fonction AMPM () gère le format 12 heures et l'affichage de l'heure AM / PM.
la source
Je ne connais pas de méthode simple pour convertir un objet de date dans n'importe quel fuseau horaire, mais si vous voulez le convertir en fuseau horaire local, vous pouvez simplement le convertir avec
Date.prototype.getTime()
le nombre de millisecondes correspondant, et inversement.Par exemple,
date.getHours()
reviendra maintenant15
au lieu de13
si vous êtes, comme moi, en Autriche (et c'est l'été).J'ai lu que les diverses fonctions datetime peuvent présenter un comportement non standard dans certains navigateurs, alors testez d'abord cela. Je peux confirmer que cela fonctionne dans Chrome.
la source
Décalage de fuseau horaire pour votre fuseau horaire actuel
Pour mon fuseau horaire GMT + 10 (Australie), il a renvoyé -36000
la source
Changeur d'heure manuel rapide et sale et retour:
la source