Eu tenho dois arquivos e preciso alterar a data da última modificação: ambos devem ser meia-noite, um no dia 25 de junho e outro no dia 25 de novembro. Basicamente, isso:
touch -cmt 201606242359.60 summer-file
touch -cmt 201611242359.60 winter-file
Nosso fuso horário do servidor é "Europa / Madri", portanto, <<> aproveitamos o horário de verão: estamos em UTC + 1 durante o inverno e UTC + 2 durante o verão. O que significa que se eu executar os comandos acima agora, eles configuram a data do winter-file corretamente, mas summer-file tem uma hora de antecedência: 24 de junho às 23:00. Se eu os executasse durante o verão, eu acho que o arquivo de verão seria o OK e o outro seria 1:00 em vez de 0:00.
Após um pouco de pesquisa e um pouco mais de tentativa e erro, eu vim com isto:
TZ=ZZZ-1 touch -cmt 201606242359.60 summer-file
TZ=ZZZ-1 touch -cmt 201611242359.60 winter-file
Que define corretamente a data de ambos os arquivos para 0:00 como pretendido. O problema é ... Eu realmente não sei o que estou fazendo aqui. Mudando o fuso horário para ZZZ-1
, por causa de ... magia? Ou ... é -1 porque estamos atualmente em UTC + 1? No próximo mês de março, quando mudarmos para o horário de verão, nosso servidor estará 2 horas à frente do UTC em vez de 1. Devo usar então ZZZ-2
, ou ZZZ-1
ainda estará bem? (Eu mudaria a data do servidor e apenas tentaria por mim mesmo, mas não posso fazer isso, isso quebraria algumas coisas).
Se eu precisar de ZZZ-2
durante o verão ... há outra expressão que eu possa definir TZ=
para fazer com que meu toque funcione adequadamente em todo o ano e para qualquer data-alvo? Eu tentei com GMT
, UTC
e UTC0
, nenhum deles funcionou (eles todos definiram meu arquivo de verão para 1:00).
Os comandos são gerados programaticamente (no Siebel CRM), eu acho que eu poderia verificar a data atual e definir TZ=ZZZ-1
ou TZ=ZZZ-2
conforme necessário ( se necessário), mas eu prefiro tem apenas uma expressão.
Além disso, observe que nosso servidor está executando o Solaris 10, caso isso faça alguma diferença. Geralmente faz ...