2016-11-08 3 views
0

Использование Javascript, есть ли способ получить имя часового пояса пользователя (PDT, EST и т. Д.) На основе пользовательского устройства?Как получить имя часового пояса (PDT, EST и т. Д.) В Javascript?

код Я попробовал:

const timezone = jstz.determine() 
const userTimezone = timezone.name() 

Но я хотел бы получить назад имя часовой пояс пользователя в PDT, EST и т.д. вместо Америки/Триатлон.

+0

afaik это невозможно. Вы можете получить смещение часового пояса, но с '(новая дата) .getTimezoneOffset()'; – Christoph

+0

@ Кристоф Вы уверены, что это невозможно? –

+0

Вы должны иметь возможность делать это только с помощью объекта Date и RegEx. Что-то вроде Date(). Match (/['\\(']...['\\)']/) – DottedT

ответ

1

Используя moment.js с дополнением moment-timezone, вы можете сделать следующее. Результаты будут согласованы независимо от браузера или операционной системы, поскольку аббревиатуры указаны в данных, предоставленных библиотекой.

Результаты примеров взяты из компьютера, установленного в часовом поясе США Тихого океана:

var zone = moment.tz.guess();   // "America/Los_Angeles" 
var abbr = moment.tz(zone).format("z"); // either "PST" or "PDT", depending on when run 

ОТКАЗ

часового пояса сокращения не являются надежными и последовательными. Существует много разных listsofthem, и есть много двусмысленностей, таких как «CST», для Центрального стандартного времени, стандартного времени Кубы и стандартного времени в Китае. В общем, вам следует избегать их использования, и вы должны никогда разобрать их.

Кроме того, аббревиатуры в момент-времени относятся к IANA TZ Database. В последних изданиях этих данных многие «изобретенные» аббревиатуры вместо этого заменены численными смещениями. Например, если часовой пояс вашего пользователя равен Asia/Vladivostok, вместо получения "VLAT", как у вас может быть в предыдущих версиях, вместо этого вы получите "+10". Это связано с тем, что аббревиатура «VLAT» была первоначально изобретена базой данных tz для заполнения данных и фактически не используется лицами в этом районе. Имейте в виду, что аббревиатуры всегда находятся на английском языке - даже в тех областях, где могут использоваться фактические использования других сокращений языка.

+0

Большое вам спасибо! Попробует попробовать и принять ответ. Несколько вопросов у меня есть, если вы не возражаете. Итак, что вы предлагаете, если я хочу отобразить имя часового пояса?Будет ли «Америка/Лос-Анжелес» лучше? –

+0

Данные, которые вы ищете, будут напоминать «Восточное стандартное время» на английском языке. Пока еще нет хорошего ответа для JavaScript, но это в [CLDR] (http://cldr.unicode.org/). Доступ через интерфейс Intl API, который его поддерживает, с параметрами 'timeZone' и' timeZoneName' на ['toLocaleString'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Дата/toLocaleString). Но они все еще не работают. –

+0

Конечно, это сильно зависит от контекста. Аббревиатуры могут быть в порядке для вашего использования. Или нет. Вы ничего не сказали о своем использовании. –