converter fuso horário da string de carimbo de data / hora no bash

converter fuso horário da string de carimbo de data / hora no bash

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.

informação relacionada