Вопрос по node.js, timezone, datetime, javascript – Как использовать смещение часового пояса в Nodejs?

22

Мне нужен следующий поток:

var a = new Date(1337324400000, 'Europe/Amsterdam'); //+2h
console.log(a); // for example 12:00 Mon ...
a.setTimeZone('Europe/Kiev'); //+3h
console.log(a); // 13:00 Mon ...

Есть ли такая возможность в утилите nodejs api?

Ваш Ответ

5   ответов
14

Момент Часовой пояс

Install:

npm install --save moment-timezone

Use:

var Moment = require('moment-timezone');
Moment().tz('America/Los_Angeles').format();
2

ется чистым JS и, похоже, является лучшей из доступных библиотек для обработки часовых поясов.

https://www.npmjs.com/package/timezone

http://bigeasy.github.io/timezone/

var tz = require('timezone/loaded'),
    equal = require('assert').equal,
    utc;

// Get POSIX time in UTC. 
utc = tz('2012-01-01');

// Convert UTC time to local time in a localize language. 
equal(tz(utc, '%c', 'fr_FR', 'America/Montreal'),
      'sam. 31 déc. 2011 19:00:00 EST');
Timezone is a MicroJS library in pure JavaScript with no dependencies that provides timezone aware date math and date formatting. Timezone uses the IANA Database to determine the correct wall clock time anywhere in the world for any time since the dawn of standardized time. Timezone formats dates with a full implementation of strftime formats, including the GNU date extensions. Timezone represents time in POSIX time and local time using RFC 3999 date strings. Timezone is a full featured standards based time library in pure JavaScript for under 3K minified and gzipped.
33

узел времени, следующее:

var time = require('time');

var a = new time.Date(1337324400000);

a.setTimezone('Europe/Amsterdam');
console.log(a.toString()); // Fri May 18 2012 09:00:00 GMT+0200 (CEST)
a.setTimezone('Europe/Kiev');
console.log(a.toString()); // Fri May 18 2012 10:00:00 GMT+0300 (EEST)
@Stefan, установитеprocess.env.TZ до некоторой ценности, такой какAmerica/New_York или жеAmerica/Chicago и смотреть изменения часовых поясов.
@oligofren Тогда вы не должны публиковать это как ответ?
Время узла не является хорошим вариантом, если вы развертываете в Azure, как мы. У вас будут проблемы с компиляцией моста ... Лучшим вариантом является timezone-js, так как это чистый js. Это также работает намного лучше.
Интересное решение, но оно меняет часовой пояс текущего процесса. Не приемлемо для меня
@weisjohn, установка process.env.TZ из процесса запущенного узла даст опасно неверные результаты, потому что libc уже будет инициализирован. Вместо этого его необходимо установить до начала процесса.
6

https://github.com/mde/timezone-js

A timezone-enabled, drop-in replacement for the stock JavaScript Date. The timezoneJS.Date object is API-compatible with JS Date, with the same getter and setter methods -- it should work fine in any code that works with normal JavaScript Dates.

нет там нет

Но вы можете использоватьmoment.js чтобы было прощеhttp://momentjs.com/docs/

Вам все еще нужно знать каждое смещение, поэтому вам понадобится отображение как{"Europe/Amsterdam":2,"Europe/Kiev":3}

спасибо, но мне нужна библиотека, которая сделает это за меня. Oleg Dats
да, вам нужно будет сделать это самостоятельно, насколько я знаю, нет готового решения.
Означает ли это, что мне нужно создать этот файл со смещением, а также рассчитать переход на летнее время? Oleg Dats
Вот он, он называется время узла, проверь мой ответ.
0

это лучший вариант для анализа, проверки & amp; меняйте время в разных часовых поясах.

Похожие вопросы