converte o fuso horário da string timestamp no bash

4

Eu tenho uma string de data / hora que é extraída de um nome de arquivo. Eu sei que o timestamp foi escrito usando o fuso horário A e preciso convertê-lo para o fuso horário B para processamento adicional. Isso é possível em bash?

por exemplo:

filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"

Eu suponho que terei que analisar a string usando o fuso horário A e, em seguida, enviá-la novamente para uma string usando o fuso horário B.

    
por pstanton 29.05.2015 / 05:56

1 resposta

7

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" para o tempo 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 o epoch (UTC) na variável do shell sec .

  • TZ="America/Los_Angeles" date -d "@$sec"

    Isso define temporariamente o fuso horário para Los Angeles e interpreta a data dada por sec .

por 29.05.2015 / 06:58

Tags