Преобразование времени сервера в любое заданное местное время в nodejs

Это код, который я запускаю на моем сервере nodejs для преобразования.

convertNowToTimezone = (localOffset) => {
  let d = new Date();
  let millis = d.getTime() + (d.getTimezoneOffset() * 60000); //convert server local time to UTC millisec
  d.setTime(millis - (localOffset * 60000)); //convert UTC millisec to required local time
  return d;
}

localOffset -330 (смещение IST), это дает разницу в 4 минуты.

Как правильно сделать эту вещь?

1 ответ

Я бы порекомендовал использовать moment работать с датами в JavaScript.

Вы можете легко управлять часовыми поясами с моментом времени

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

moment().tz("UTC").format();
moment().tz("America/Los_Angeles").format();

console.log(moment().tz("UTC").format());
console.log(moment().tz("America/Los_Angeles").format());
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>

localOffset -330 (смещение IST), это дает разницу в 4 минуты.

Проверьте, синхронизировано ли время вашего сервера. Вы можете использовать NTP для этого, если вы используете сервер Linux.

JS прямо вверх:

const dateISOString = '2019-10-03T02:45:02'; // UTC server time or --> new Date()
const aest = new Date(new Date(dateISOString).toLocaleString('en-AU', { timeZone: 'Australia/Sydney' }));
console.log("aest.toISOString(): " + aest.toISOString());
Другие вопросы по тегам