convertir la zona horaria de la cadena de marca de tiempo en bash

convertir la zona horaria de la cadena de marca de tiempo en bash

Tengo una cadena de fecha/hora que se extrae de un nombre de archivo. Sé que la marca de tiempo se escribió utilizando la zona horaria A y necesito convertirla a la zona horaria B para su posterior procesamiento. ¿Es esto posible en bash?

p.ej:

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

Supongo que tendré que analizar la cadena usando la zona horaria A y luego enviarla nuevamente a una cadena usando la zona horaria B.

Respuesta1

Para interpretar la fecha de Sydney como una fecha de Los Ángeles, EE. UU.:

$ 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

Aquí está el resultado para Brisbane:

$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015

Cómo funciona

  • TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"

    Esto establece temporalmente la zona horaria en Sydney y convierte la fecha "2015-05-20 18:05:02" a la hora en segundos desde la época (UTC).

  • sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")

    Esto guarda el tiempo en segundos desde la época (UTC) en la variable de shell sec.

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

    Esto establece temporalmente la zona horaria en Los Ángeles e interpreta la fecha proporcionada por sec.

información relacionada