Obtenha 60 minutos antes e depois de um determinado timestamp - Shell / ksh

0

Estou procurando obter um intervalo de tempo de um determinado período. O horário de início deve ser 60 minutos antes que o tempo determinado e a hora final sejam 60 minutos após o tempo determinado.

Objetivo: O tempo determinado será como um 'tempo de impacto', estou procurando obter um intervalo adequado de tempo em torno do tempo de impacto para poder capturar registros.

Exemplo: O horário previsto é de 2018-05-16 20:30:00 Este é o formato '% Y-% m-% d% H:% M:% S'

Por favor me ajude a obter: A hora de início é de 2018-05-16 19:30:00 A hora de término é 2018-05-16 21:30:00

Isso será executado em um servidor que estará sempre em PDT / PST e a data e hora no formato '% Y-% m-% d% H:% M:% S'

    
por Sierra 17.05.2018 / 01:40

1 resposta

0

Assumindo que o fuso horário está configurado corretamente e a data do GNU, você pode obter o carimbo de data / hora Unix, subtrair, adicionar 60 minutos e convertê-lo de volta ao formato necessário:

$ ts=$(date -d "2018-05-16 21:30:00" +%s)  # For BSD date: date -jf "%F %T" "2018-05-16 21:30:00" +%s 
$ echo "$(date -d@$((ts - 3600)) +"%F %T")"
2018-05-16 20:30:00
$ echo "$(date -d@$((ts + 3600)) +"%F %T")"
2018-05-16 22:30:00

... Eu acho que isso não conta corretamente para segundos bissextos e vários outros problemas que todo programador deve saber sobre o tempo .

    
por 17.05.2018 / 03:51

Tags