Como alterar o fuso horário em um script bash?

0

Estou trabalhando no Linux Ubuntu, e quero um script bash cuja saída seja converter o fuso horário com 7 horas de antecedência do tempo do meu servidor.

Hora do meu servidor:

Mon Jul 23 23:00:00 2017

O que eu quero alcançar:

Mon Jul 24 06:00:00 2017

Eu tentei este no meu script bash:

#!/bin/bash

let var=$(date +%H)*3600+$(date +%M)*60+$(date +%S)
seven=25200
time=$(($var+$seven))

date=$(date --date='TZ="UTC+7"' "+%Y-%m-%d")
hours=$(date -d@$time -u +%H:%M:%S)

echo "$date" "$hours"

a saída foi:

2017-07-23 06:00:00

O horário funciona, mas a data ainda corresponde à data do servidor. Existe outra maneira de resolver isso?

    
por spacetrack 24.07.2017 / 07:55

3 respostas

0

Responda à sua pergunta literalmente, se você quiser apenas obter uma sequência de data por 7 horas depois da hora atual na zona atual, é fácil:

date -d "7 hours" "+%Y-%m-%d %H:%M:%S"

Se, no entanto, o que você realmente quer fazer é colocar a data / hora local em outro fuso horário, seria melhor seguir o conselho em algumas das outras respostas.

    
por 30.07.2017 / 14:09
3

Você examinou a seção de citações em man bash ?
Eu acredito em algo como %código% é o que você está procurando. Alguém pode segundo isso para mim?

    
por 24.07.2017 / 11:32
1

Você pode alterar o fuso horário de todo o script alterando a variável de ambiente TZ no início do script. Pode ser substituído em comandos individuais.

Por exemplo, este script

#!/bin/bash
export TZ=Australia/Sydney

date
TZ=US/Pacific date
date

A saída será

Sun 30 Jul 21:56:25 AEST 2017
Sun 30 Jul 04:56:25 PDT 2017
Sun 30 Jul 21:56:25 AEST 2017
    
por 30.07.2017 / 13:57

Tags