Преобразование времени сервера в любое заданное местное время в 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());