Supondo que você esteja trabalhando com os fusos horários dos Estados Unidos e da América Central e Oriental, e supondo que você tenha a data do GNU:
TZ=US/Eastern date --date='TZ="US/Central" 08:45'
A variável de ambiente TZ "externa" (primeiro) informa a data em que ela deve funcionar no fuso horário EUA / Leste; aqui, isso afeta a impressão do tempo após date
terminar de processar a entrada. A hora é então especificada usando data da GNU regras de fuso horário , onde as aspas duplas em torno do fuso horário são necessárias. A especificação --date
aqui diz que você gostaria de imprimir a hora como ela existe no fuso horário dos EUA / Central às 08:45.
A correção mais curta para o seu código seria:
out_date4=$(TZ=US/Eastern date --date='TZ="US/Central" '"$out_date3")
Nota
A análise da saída de ls
será interrompida assim que out.log for modificada pela última vez há mais de 6 meses - o formato de hora da saída de ls
mudará de "month day hour: minute" para "mês dia ano" e, de repente, seu extrato do awk enviará o ano em vez das horas & minutos para sua variável out_date3!
Mais flexivelmente, e assumindo novamente os utilitários GNU, use o comando stat
para recuperar o horário da última modificação e peça ao date
para convertê-lo para você:
out_date3=$(stat -c %Y out.log)
out_date4=$(TZ=US/Eastern date --date @"$out_date3")
Neste ponto, você tem o horário da última modificação de out.log em segundos-desde-o-epoch na variável out_date3. Se você quiser imprimir em vários formatos, date
fará isso com prazer:
date --date @"$out_date3"
date +'%H:%M:%S' --date @"$out_date3"