2016-02-13 8 views
1

Я использую moment-timezone.js, чтобы конвертировать UTC в America/New_York через node.js. Я делаю это так:
Moment.js - Преобразование UTC в восточное время

var moment = require('moment-timezone'); 
moment.tz.add('America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'); 

var now = new Date().toISOString(); 
now = moment(now).tz("America/New_York").toDate(); 

Это, кажется, работает хорошо на моей локальной машине, но когда я запускаю его на AWS Lambda, то now время по-прежнему выводится как UTC.

Я здесь что-то не так? Я действительно не хочу использовать API, чтобы получить точное время в Нью-Йорке. Летняя экономия - самая большая проблема здесь. Благодаря!

+0

Какой часовой пояс используется вашей локальной машиной? Где код, который выводит дату? Я уверен, что как только вы вызовете toDate(), вы теряете информацию о часовом поясе. –

+0

Да, вы правы, при вызове toDate() используется исходный объект даты до момента. Я понял решение, и опубликую немного. –

ответ

2

Как я понял это было сделать:

var now = ((moment(Date.now()).utcOffset('-0500').format('x')); 
//Parse it into native JS object: 
now = new Date(parseInt(now)); 

Я хочу подчеркнуть что-то, хотя я надеюсь, спасти кого-то дни времени это обремененного меня для. Моя основная проблема заключалась в том, что Amazon Lambda предоставляла время в UTC, независимо от того, что я делаю. Исправление этой проблемы состояло в том, чтобы просто установить переменную окружения Node TZ:

process.env.TZ = 'America/New_York'; 
+0

будет также изменен этот режим дневного света? – Shamseer

Смежные вопросы