Parece que o comando ls não sabe o suficiente sobre os zomes de tempo europeus e as datas em que o CEST está em vigor.
Eu estou supondo que o 16:01 relatado por DIR foi 16:01 CEST, mas o comando ls
não aplicou a hora extra para o horário de verão.
Não tenho certeza de como o msysgit (ou apenas msys) armazena informações de fuso horário: no Solaris, há arquivos zoneinfo para isso.
Se houver alguma maneira de se comunicar com suas ferramentas msysgit quando o horário de verão começar e terminar, o comando ls
poderá acertar.
Talvez esta página ofereça uma pista.
Experimente brincar com configurações de ambiente como
SET TZ=CET+1CEST,M3.5.0/2,M10.5.0/2
que afirma que o CEST começa no último domingo (dia 0) de março às 2 da manhã e termina no último domingo de outubro às 2 da manhã. Isso deve lhe dar algo para trabalhar.
(Normalmente, basta indicar o fuso horário e o fuso horário do horário de verão apenas: "CET + 1CEST" e confiar no SO para saber quais devem ser as datas relevantes. Mas aqui estamos definindo as datas explicitamente.)
Eu posso ver algo semelhante acontecendo ao contrário com MSys no meu sistema:
Um arquivo reportado pelo comando DIR (e Windows Explorer) como escrito em 2008-04-18 em 12:19 (que deveria ter sido BST: GMT + 1) é mostrado por MSys ls
as 13:19:06 .
Se eu brincar com as datas de fuso horário e SET TZ
, embora o DST não tenha começado até no final de abril , posso alterar isso para corresponder à saída de DIR.
Mas, até onde eu sei, a regra da UE sobre o horário de verão é que começa no último domingo de março (M3.5.0 / 2) e termina no último domingo de outubro (M10.5.0 / 2). ).
Então, quando eu digito (em um shell MSys, ou no Cygwin, ou no Unix):
TZ=GMT0BST,M3.5.0/2,M10.5.0/2 ls --full-time foo
Eu devo ver a hora correta, com o DST aplicado. Na verdade, vejo 13:19, da mesma forma que quando não coloco o fuso horário de jeito nenhum.
O que me faz pensar se MSys e msysgit estão acertando, e o Windows está errado.