Настройка часового пояса в JavaScript на основе местоположения IP
offset = new Date().getTimezoneOffset();
Это дает вам смещение часового пояса на основе часов компьютера или часового пояса браузера. Есть ли способ получить смещение часового пояса на основе местоположения IP?
1 ответ
На http://ip-api.com/ есть API, который будет возвращать широту, долготу и часовой пояс для IP-адреса. Часовой пояс имеет формат "America/New_York" и т. П., Который вам понадобится для того, чтобы moment.js и moment-timezone.js превратились в фактическое часовое и минутное смещение.
Имейте в виду, что из-за правил перехода на летнее время смещение часового пояса для данного местоположения не обязательно является постоянным - поэтому используются именованные часовые пояса, такие как "America/New_York", и поэтому вам нужно что-то вроде moment.js для интерпретации смещение часового пояса для любого конкретного времени.
Вы можете использовать momentjs и получить зону пользователя следующим образом:
const moment = require('moment-timezone');
let zone = moment.tz.guess()
Как только вы получите зону, вы можете использовать ее для получения часового пояса:
const tzn = moment().tz(zone).format('DD-MMM-YYYY HH:mm:ss Z');
Для получения дополнительных разъяснений вы можете проверить документы momentjs: https://momentjs.com/timezone/docs/