Converter hora específica em fuso horário específico para hora no fuso horário do usuário sem usar a data do GNU

2

Especificamente, o que eu quero saber é: quando são 10:00 (10:00) EST, que horas são no fuso horário atual do usuário? No momento de escrever a resposta para um usuário no Reino Unido (GMT) seria 15:00 (3PM).

No meu caso específico, nem preciso dos minutos nem do dia, apenas a hora ( 15 neste exemplo).

A maioria das perguntas dessa natureza está relacionada à conversão do horário atual (agora) ou do fuso horário do usuário. Em um ponto eu até recorri ao ruby para a transformação, mas fazê-lo funcionar de qualquer coisa além do UTC é um pouco mais difícil. Eu sinto que deve haver uma maneira de fazer isso com date , mas o macOS usa o date do BSD e a maioria das respostas usa o GNU.

    
por user137369 05.01.2017 / 21:34

2 respostas

4

É muito desajeitado, mas isso deve ser feito no MacOS usando apenas o shell e o comando date :

Converta 2017-01-05 10:00:00 na hora leste da América do Norte para o fuso horário local do sistema:

date -r $(TZ=America/Montreal date -j 010510002017 +%s)

Para converter isso em um fuso horário diferente do local, prefixe o comando outer com o fuso horário desejado:

TZ=Australia/Sydney date -r $(TZ=America/Montreal date -j 010510002017 +%s)

Apenas tome cuidado com o formato de entrada de datas extremamente bizarro: mmddHHMMYYYY

    
por 05.01.2017 / 23:33
1

As APIs POSIX não são muito ricas a esse respeito. Provavelmente, é melhor usar algo como pytz do que as ferramentas do sistema:

#!/usr/bin/python

import datetime
import pytz

eastern = pytz.timezone('America/Montreal')
britain = pytz.timezone('Europe/London')
datetime.datetime(2017, 1, 5, 10, 0, tzinfo=eastern).astimezone(britain)
    
por 05.01.2017 / 22:16

Tags