
Eu tenho uma string de data/hora que é extraída de um nome de arquivo. Eu sei que o carimbo de data/hora foi escrito usando o fuso horário A e preciso convertê-lo para o fuso horário B para processamento posterior. Isso é possível no bash?
por exemplo:
filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"
Presumo que terei que analisar a string usando o fuso horário A e depois enviá-la novamente para uma string usando o fuso horário B.
Responder1
Para interpretar a data em Sydney para uma data em Los Angeles, EUA:
$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015
Aqui está o resultado para Brisbane:
$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015
Como funciona
TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"
Isso define temporariamente o fuso horário para Sydney e converte a data "2015-05-20 18:05:02" em segundos desde a época (UTC).
sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
Isso economiza o tempo em segundos desde a época (UTC) na variável shell
sec
.TZ="America/Los_Angeles" date -d "@$sec"
Isso define temporariamente o fuso horário para Los Angeles e interpreta a data fornecida por
sec
.