На моем компьютере с Windows XP установлена программа ls
. Это пришло с msysgit.
Я имел это некоторое время, и оказывается, что я использую это довольно часто, даже в приглашении DOS. Больше, чем dir
.
Дело в том, что он дает мне метки времени со смещением в один час. Смотрите дату для gcc.exe, ls
говорит 15:01, dir
говорит 16:01:
C:\MinGW\bin>ls --full-time gcc.exe
-rwxr-xr-x 1 gaf Administ 90112 Thu Apr 24 15:01:53 2008 gcc.exe
C:\MinGW\bin>dir gcc.exe
Volymen i enhet C har ingen etikett.
Volymens serienummer är 644A-83A3
Innehåll i katalogen C:\MinGW\bin
2008-04-24 16:01 90 112 gcc.exe
1 fil(er) 90 112 byte
0 katalog(er) 104 458 203 136 byte ledigt
(простите за странный язык)
Я могу сказать, что это ls
делает это неправильно, я проверил это с вновь созданными файлами.
Это довольно тревожно, есть какие-нибудь предложения о том, как я могу это решить?
РЕДАКТИРОВАТЬ: больше информации добавлено после ответа njd.
Изменение переменной env TZ имеет эффект. Я живу в Швеции, где время CET зимой, CEST летом. Я проверил UTC, CET и CEST и получил странные (для меня) результаты:
C:\Program\Git\bin>set TZ=UTC
C:\Program\Git\bin>.\date
Mon Feb 15 12:53:26 GMT 2010
C:\Program\Git\bin>set TZ=CET
C:\Program\Git\bin>.\date
Mon Feb 15 12:53:50 GMT 2010
C:\Program\Git\bin>set TZ=CEST
C:\Program\Git\bin>.\date
Mon Feb 15 12:53:59 GMT 2010
C:\Program\Git\bin>set TZ=CET+1
C:\Program\Git\bin>.\date
Mon Feb 15 11:54:27 CET 2010
C:\Program\Git\bin>set TZ=CET-1
C:\Program\Git\bin>.\date
Mon Feb 15 13:54:35 CET 2010
Установка TZ в CET или CEST не имеет никакого эффекта. Дата отображается по-прежнему GMT. Кажется, что строка CET сама по себе не имеет никакого эффекта. Является ли это только строкой для отображения, и учитывается только при наличии явного смещения.
C:\Program\Git\bin>set TZ=FOO-1
C:\Program\Git\bin>.\date
Mon Feb 15 14:00:29 FOO 2010
C:\Program\Git\bin>set TZ=BAR-1
C:\Program\Git\bin>.\date
Mon Feb 15 14:00:42 BAR 2010
Ну, это похоже.
-1 имеет правильный эффект. Но время Швеции - UTC+1:CET в Википедии
Есть ли несоответствие в соглашении, -1 в TZ - UTC+1?
Если я хочу позволить ОС решить, будет ли лето или зима, как указано в ответе njd, я могу опустить время начала и окончания. Я полагаю, правильная строка TZ=CET-1CEST-2
, это правильно?
Я не уверен, что окна делают летом. Если он обновляет сами часы, приведенная выше строка не будет работать. Если он обновляет только смещение, то это может сработать. Больше идей?