Comment puis-je obtenir le nom du fuseau horaire en JavaScript?

je sais comment obtenir le décalage du fuseau horaire, mais ce dont j'ai besoin c'est la capacité de détecter quelque chose comme "America/New York."Est-ce même possible à partir de JavaScript ou est-ce quelque chose que je vais devoir estimer sur la base de l'offset?

43
demandé sur Mike Thomsen 2012-03-19 19:27:04

5 réponses

l'Internationalisation de l'API supporte l'obtention du fuseau horaire de l'utilisateur, et est prise en charge dans tous les navigateurs actuels.

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

gardez à l'esprit que sur certaines versions de navigateur plus anciennes qui prennent en charge l'API D'internationalisation, le timeZone propriété est définie à undefined plutôt que la chaîne de fuseau horaire de l'utilisateur. Autant que je puisse le dire, au moment de la rédaction (juillet 2017)tous les navigateurs actuels sauf IE11 sera le retour de la le fuseau horaire de l'utilisateur comme une chaîne de caractères.

55
répondu Daniel Compton 2018-09-03 00:25:02

Vous pouvez utiliser ce script. http://pellepim.bitbucket.org/jstz/

dépôt fourche ou clone ici. https://bitbucket.org/pellepim/jstimezonedetect

une fois que vous avez inclus le script, vous pouvez obtenir la liste des timezones dans - jstz.olson.timezones variable.

et le code suivant est utilisé pour déterminer le fuseau horaire du navigateur client.

var tz = jstz.determine();
tz.name();

Profitez de jstz!

6
répondu sean 2015-04-17 02:41:19

Vous pouvez simplement écrire votre propre code en utilisant la table de correspondance ici: http://www.timeanddate.com/time/zones/

ou alors, utilisez moment-fuseau horaire de la bibliothèque: http://momentjs.com/timezone/docs/

Voir zone.name; // America/Los_Angeles

ou, cette bibliothèque: https://github.com/Canop/tzdetect.js

3
répondu advncd 2015-04-13 19:06:17

essayez ce code depuis ici

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js">
</script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js">
</script>
<script type="text/javascript">
  $(document).ready(function(){
    var tz = jstz.determine(); // Determines the time zone of the browser client
    var timezone = tz.name(); //'Asia/Kolhata' for Indian Time.

    alert(timezone);
});
</script>
2
répondu Kumar Shanmugam 2018-05-28 11:49:21

en javascript, la Date.la méthode getTimezoneOffset () renvoie le décalage du fuseau horaire de UTC, en minutes, pour la locale courante.

var x = new Date();
var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60;

Moment'timezone sera un outil utile. http://momentjs.com/timezone/

Convertissez Les Dates Entre Les Fuseaux Horaires

var newYork    = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london     = newYork.clone().tz("Europe/London");

newYork.format();    // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format();     // 2014-06-01T17:00:00+01:00
-3
répondu user3345614 2015-04-17 16:38:30