Преобразуйте метку времени utc в местное время, используя смещение в секундах

Мне нужно преобразовать метку времени utc в местное время, используя смещение utc в секундах. я использовал библиотеку момент-часовой пояс. это мой код

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

var timestamp = Date.now();

var IST1 = moment(timestamp).utcOffset('+05:30').format('ddd MMM D Y hh:mm:ss A ')
console.log("IST1 '+05:30' --> ", IST1);

var IST2 = moment(timestamp).utcOffset('+19800').format('ddd MMM D Y hh:mm:ss A ')
console.log("IST2 '+19800' --> ", IST2);

Но я получил вывод, как это

IST1 '+05:30' -->  Mon Jun 19 2017 01:39:23 PM 
IST2 '+19800' -->  Tue Jun 20 2017 04:29:23 AM

Используя «+05:30», я получил правильное время. Но используя «+19800», я ошибся во времени. Какова фактическая проблема, связанная с этим кодом?


person Abdul Manaf    schedule 19.06.2017    source источник
comment
Почему вы используете utcOffset? Момент по умолчанию анализирует время по местному времени, если вам нужно преобразовать время в заданный часовой пояс, вы можете использовать tz().   -  person VincenzoC    schedule 19.06.2017
comment
мне нужно преобразовать время в разных регионах (например: IST, PDT и т. д.)   -  person Abdul Manaf    schedule 19.06.2017
comment
Поскольку вам нужно преобразовывать время в разных регионах, я все же думаю, что вам нужно использовать tz() вместо utcOffset. У вас может быть что-то вроде moment(timestamp).tz("Asia/Kolkata") для IST и moment(timestamp).tz("America/Los_Angeles") для PDT. См. здесь и здесь для тех же примеров.   -  person VincenzoC    schedule 19.06.2017
comment
я уже тестировал регионы часовых поясов. Но в моем случае мои входы - это метка времени и смещение часового пояса в секундах. это ты   -  person Abdul Manaf    schedule 19.06.2017


Ответы (1)


Из документов Moment видно, что функция utcOffset принимает минуты в качестве параметров и не секунды.

Попробуйте использовать

var IST2 = moment(timestamp)
    .utcOffset('+330')
    .format('ddd MMM D Y hh:mm:ss A ')

и это должно работать.

person tbking    schedule 19.06.2017
comment
Я успешно получил такой результат. Среда, 5 июля 2017 г., 11:29:56. Можно ли получить часовой пояс с этим.? например, ср, 5 июля 2017 г., 11:29:56 IST - person Abdul Manaf; 05.07.2017