2016-07-06 21 views
0

Ich habe Probleme, ein Paket zu finden, mit dem ich die Zeitzoneninformationen für jede Zeitzone zu jedem Zeitpunkt abfragen kann. Oder zumindest die nächsten 10 Jahre oder so. Historische Werte sind in meinem Anwendungsfall nicht von Interesse.Unformatierte Zeitzoneninformationen in Knoten js

Im Idealfall würde Ich mag eine API haben, wie:

var tzInfo = require(tz-info); 

var utcOffset = tzInfo.getOffset('Europe/Stockholm', new Date()); //query the current offset from UTC 

var allTimezones = tzInfo.getAllTimezoneNames(); 

Ich habe gesucht, aber kam zu kurz. Die meisten Bibliotheken wie Moment-Time Zone scheinen sehr darauf ausgerichtet zu sein, in verschiedenen Zeitzonen einmal zu sprechen. Und das ist anders als mein Anwendungsfall.

In Linux können Sie tun:

#get all timezone names 
cd /usr/share/zoneinfo ; find 

#get all offset changes 
zdump -v <timezone> 

Ich denke, das ist eine Option und die Ausgabe von zdump analysieren, um meine eigene Datenbank aufzubauen. Aber ich lieber nicht. Plattformunabhängigkeit ist sehr schön zu haben. Aber kein Deal Breaker.

Antwort

2

Moment-timezone kann absolut diese Anforderung erfüllen.

var moment = require('moment-timezone'); 

// query the current offset from UTC 
var utcOffset = moment.tz('Europe/Stockholm').utcOffset(); 

// query the offset from UTC for a specific point in time 
// (input can be string, date, moment, timestamp, etc. see the docs) 
var utcOffset = moment.tz(input, 'Europe/Stockholm').utcOffset(); 

Das funktioniert, weil Moment-Zeitzone ist eine Erweiterung zu moment.js. Alle Funktionen von moment.js sind verfügbar, einschließlich der Funktion utcOffset.

Und ja, Sie können auch die Namen der Zeitzonen erhalten:

var allTimezones = moment.tz.names(); 

aber ich werde einen Fehler hervorheben:

... Oder zumindest die nächsten 10 Jahre oder so ...

Es gibt kein System auf dem Planeten, kann genau geben Sie eine Vorhersage von Zeitzonen 10 Jahre in die fu ture. Regierungen ändern ihre Meinung ständig, und Systeme müssen entsprechend aktualisiert werden. Sie sollten dies planen.

Die Informationen in der TZDB (wie sie sowohl von Linux, Moment-Timezone und vielen anderen verwendet werden) sind nur so genau wie die aktuellen Informationen der Regierungen der Welt. Eine Prognose, die 10 Jahre in die Zukunft gehen wird, muss sicherlich mehrmals neu bewertet werden.

+0

Große Erläuterung, wie Moment-Timezone zu verwenden ist. Ich schaute es mir an, drang aber nicht tief genug in die Dokumente ein. Oh und ja, du hast Recht damit, die Zukunft vorherzusagen. Punkt genommen. – tkarls

0

Haben Sie tz Knotenmodul here betrachtet? Und seine Quelle here.

Es exportiert ein Objekt mit allen möglichen Zeitzonen-Offsets als Schlüssel und einem Array mit gültigen Zeitzonen als Wert. Sie könnten einfach var tz = requrie('tz'); ausführen, über alle Schlüssel in tz iterieren und dann über das Array, das dem Schlüssel zugeordnet ist, name von jedem Objekt herauszupfen.

Die resultierende Liste sollte Ihnen eine Liste aller möglichen Zeitzonen geben.

+0

Diese Bibliothek wurde seit einigen Jahren nicht mehr aktualisiert - was bei Zeitzonen kein Problem darstellt. Auch scheint es für einen anderen Zweck gedacht. –