Sei como obter a diferença de fuso horário, mas o que preciso é a capacidade de detectar algo como "América / Nova York". Isso é possível a partir do JavaScript ou é algo que terei de estimar com base no deslocamento?
javascript
timezone
Mike Thomsen
fonte
fonte
Respostas:
A API de internacionalização oferece suporte para obter o fuso horário do usuário e é compatível com todos os navegadores atuais.
Lembre-se de que em algumas versões mais antigas do navegador que suportam a API de internacionalização, a
timeZone
propriedade é definida comoundefined
em vez da string de fuso horário do usuário. Até onde posso dizer, no momento da escrita (julho de 2017), todos os navegadores atuais, exceto o IE11 , retornarão o fuso horário do usuário como uma string.fonte
A resposta mais votada é provavelmente a melhor maneira de obter o fuso horário, no entanto,
Intl.DateTimeFormat().resolvedOptions().timeZone
retorna o nome do fuso horário da IANA por definição, que está em inglês.Se você quiser o nome do fuso horário no idioma do usuário atual, pode analisá-lo a partir
Date
da representação de string da seguinte maneira:Testado no Chrome e Firefox.
Claro, isso não funcionará como esperado em alguns dos ambientes. Por exemplo, node.js retorna um deslocamento GMT (por exemplo
GMT+07:00
) em vez de um nome. Mas acho que ainda pode ser lido como uma alternativa.PS Não funciona no IE11, apenas como
Intl...
solução.fonte
Você pode usar este script. http://pellepim.bitbucket.org/jstz/
Repositório bifurcado ou clone aqui. https://bitbucket.org/pellepim/jstimezonedetect
Depois de incluir o script, você pode obter a lista de fusos horários na
jstz.olson.timezones
variável.E o código a seguir é usado para determinar o fuso horário do navegador do cliente.
Aproveite o jstz!
fonte
Recuperar fuso horário por nome (ou seja, "América / Nova York")
fonte
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
retornaundefined
, masmoment.tz.guess()
retorna o valor corretoVocê pode simplesmente escrever seu próprio código usando a tabela de mapeamento aqui: http://www.timeanddate.com/time/zones/
ou use a biblioteca de fuso horário de momento: http://momentjs.com/timezone/docs/
Vejo
zone.name; // America/Los_Angeles
ou esta biblioteca: https://github.com/Canop/tzdetect.js
fonte
Isso obtém o código de fuso horário (por exemplo,
GMT
) em javascript mais antigo (estou usando o Google App Script com mecanismo antigo):Só estou colocando isso aqui para o caso de alguém precisar.
fonte
UTC
/GMT
. Parece que outros estão explicados; por exemplo,Pacific Daylight Time
.Experimente este código, consulte aqui
fonte
Em javascript, o método Date.getTimezoneOffset () retorna o deslocamento do fuso horário do UTC, em minutos, para o local atual.
Moment'timezone será uma ferramenta útil. http://momentjs.com/timezone/
Converter datas entre fusos horários
fonte