Розглянемо способи отримання часового поясу користувача за допомогою JavaScript.
Зверніть увагу що інколи користувачі в настройках ОС вказують не вірний часовий пояс. Хоча здебільшого часовий пояс визначається автоматично з мережі.
Date.getTimezoneOffset()
Date.getTimezoneOffset() повертає зміщення часового поясу UTC відносно локалі користувача.
Наприклад для України часова зона "Europe/Kiev" часова зона +2, метод Date.getTimezoneOffset() повертає -120.
Одна часова зона це 60 хв. +2 для Києва це 120 хв, але метод повертає -120, тому що для зміщення до 0 потрібно -120.
Зверніть увагу! У літній час для Києва зміщення буде -180. Це пов'язано з переходом на літній час.
var d=new Date();
alert( 'зміщення відносно UTC '+d.getTimezoneOffset() );
Вираховуємо часову зону:
var d=new Date();
var tz=(0-d.getTimezoneOffset())/60;
alert('поточна локальна часова зона UTC: '+tz);
timeZone
Intl.DateTimeFormat.resolvedOptions() повертає назву локальної тайм зони ОС користувача.
function getTimeZone(){
return Intl.DateTimeFormat().resolvedOptions().timeZone;
}
alert( getTimeZone() );
Date.toString()
Витягуємо з рядка Date.toString() значення часового поясу:
function getTimeZone(){
var date = Date(); //Date.toString()
var s = date.toString();
var tz=s.match(/(GMT?\+?\-?\d+?\:?\d+|GMT?\+?\-?\d+|GMT|UTC?\+?\-?\d|ADT|HST|AKDT|HADT|PDT|MST|MDT|CDT|EDT|EST|AST|CST)/g);
return tz==null?'':tz[0];
}
alert( getTimeZone() );