Вы можете очистить его от метода toString()
объекта даты. new Date.toString()
приводит к чему-то вроде Wed Sep 19 2012 10:04:32 GMT-0400 (Eastern Daylight Time)
в Firefox, Safari и Chrome. Данные, которые вы хотите, есть - заглавные буквы в скобках. Все, что нужно, это очистить их.
В случае Internet Explorer результат toString()
уже включает EDT
.
В случае с Opera вы можете выбрать GMT-0400
или аналогичный вариант. В методе toString()
ничего нет.
var now = new Date().toString();
var TZ = now.indexOf('(') > -1 ?
now.match(/\([^\)]+\)/)[0].match(/[A-Z]/g).join('') :
now.match(/[A-Z]{3,4}/)[0];
if (TZ == "GMT" && /(GMT\W*\d{4})/.test(now)) TZ = RegExp.$1;
Пример результатов:
Firefox: TZ = "EDT"
Safari: TZ = "EDT"
Chrome: TZ = "EDT"
IE: TZ = "EDT"
Опера: TZ = "GMT-0400"
Кажется, работает также со всеми случайными часовыми поясами Азии и Европы, которые я пробовал, возвращая WPST для Гуама (стандартное время Западной части Тихого океана), MPST для Куала-Лумпура (стандартное время Малайского полуострова) и т. Д .; и мирно понижается до GMT + 0X00, где браузер не предоставляет имя (например, Перт).