Configuração do fuso horário do sistema com base em um timestamp

1

Eu quero definir a data e o fuso horário do sistema com base em uma string parecida com essa (saída de Javascript new Date().toString() ):

Fri Aug 01 2014 12:13:27 GMT+0200 (CEST)

A maneira padrão de definir o fuso horário em um sistema Debian é rodar tzselect ou ligar simbolicamente um arquivo de zona de /usr/share/zoneinfo em /etc/localtime . Em ambos os casos, preciso saber o fuso horário por continente / cidade.

Existe uma maneira fácil de definir o fuso horário com base apenas no deslocamento GMT?

    
por Martin Zoller 01.08.2014 / 12:24

1 resposta

2

Em geral, não há informações suficientes nessa data para saber em que fuso horário foi gerado. O +0200 informa que o fuso horário em questão está atualmente à frente do UTC por duas horas . Ele não informa se o deslocamento muda ao longo do ano ou de ano para ano, como saber o fuso horário atual. Quanto à parte CEST , esses nomes de fuso horário curtos não são exclusivos (vários fusos horários diferentes podem se chamar CEST ).

Como você apontou em um comentário, você pode usar a string para adivinhar um dos Etc/* timezones que estão em offsets fixos do UTC o tempo todo, mas é só isso. E também, nem todas as compensações possíveis existem como Etc/* timezones, por exemplo, +0545 do Nepal.

Como você também apontou em um comentário que você precisa disso apenas para um aplicativo específico, talvez esteja interessado em alterar o fuso horário apenas para o processo atual (o processo do seu aplicativo) using a variável de ambiente TZ ? Usando isso, você pode definir uma linha de fuso horário:

TZ=CEST-2

Você tem tudo o que precisa na string de data que citou para fazer isso. (Observe o sinal oposto no deslocamento.)

    
por 01.08.2014 / 13:59