Pliki zmodyfikowane poza czasem letnim pokazują czas standardowy w Eksploratorze Windows 7

3

Mam system Windows 7 Professional z automatycznymi aktualizacjami (więc wszystkie poprawki powinny zostać zastosowane). Jestem w strefie czasowej EST / EDT (Nowy Jork). Pole czasu Panelu sterowania ma zaznaczoną opcję „użyj czasu letniego”. DST po prostu „skoczył do przodu” w niedzielę. Próbowałem zastosować poprawkę od sierpnia ubiegłego roku (KB2863058) i mówi, że jest już zainstalowany.

W polu Wiersz polecenia (wiersz poleceń DOS) „dir” podaje poprawny czas dla pliku, który właśnie zaktualizowałem, a także zaktualizowany dwa miesiące temu (w czasie standardowym). Zegar w prawym dolnym rogu ekranu podaje prawidłowy czas. Jednak Eksplorator Windows podaje godzinę wcześniej pliki zmodyfikowane ostatnio w czasie standardowym.

Na przykład,

dir C:\Users\Phil\Desktop\content

daje mi

01/24/2014  12:36 PM    4,524  ContentList.txt

podczas wyświetlania Eksploratora Windows Desktop> zawartość

ContentList.txt    1/24/2014 11:36 AM  Text Document

To godzina przerwy, jakby DST nie został zastosowany. Czy to znany błąd systemu Windows? Nie widziałem żadnych raportów na ten temat. Ponieważ „dir” i WinExp zgadzają się na właśnie zmodyfikowany plik, myślę, że to WinExp jest wyłączone. Użyłem nazwy pliku -M $ Perla (z $ ^ T), aby uzyskać wiek plików w ułamkowych dniach, a wiek pracy ręcznie daje czas dwie godziny później niż WinExp (13:36 w powyższym przykładzie). Zakładam, że godzina 1 odpowiada DST, ale druga?

Podsumowując, dla tego samego pliku (ostatnio zmodyfikowanego w czasie standardowym):

Windows Explorer   11:36 AM
Command Prompt     12:36 PM
Perl -M operator    1:36 PM

W przypadku pliku zmodyfikowanego dzisiaj wszystkie trzy razy są zgodne. Kto ma rację, a kto się myli? Sądzę, że różne sposoby wyświetlania czasu powinny być zgodne co do tego, czy stosuje się czas letni.

Phil Perry
źródło
Dodatkowe informacje: polecenie stat () (Perl) zachowuje się tak samo jak -M (prawdopodobnie oba używają wywołania biblioteki C stat ()). Pliki ostatnio zmodyfikowane podczas DST (w tym w poprzednich latach) wydają się pokazywać takie same we wszystkich przypadkach. Tylko pliki zmodyfikowane w okresie Standard Time (DST off) wydają się pojawiać godzinę później na -M i stat i dir, w porównaniu do Eksploratora Windows.
Phil Perry
Myślę, że mam obejście, po obliczeniu znacznika czasu (od -M operatora), podanie go do localtime () i sprawdzenie, czy flaga $ isdst ma wartość FAŁSZ. Jeśli tak, muszę odjąć 1 godzinę (3600 sekund) od znacznika czasu. Chciałbym jednak wiedzieć, jakie kombinacje DST dla „teraz” i „plik został zmodyfikowany” wymagają takiej aktualizacji i jeśli muszę dodać 3600 sekund, jeśli plik był DST, a „teraz” nie jest DST. Czy ktoś wie na pewno? Czy istnieje prostszy sposób na to?
Phil Perry
Jeśli Eksplorator Windows jest godzinę wcześniej, nie oznacza to, że Eksplorator Windows jest poprawny, a wiersz polecenia niepoprawnie przyjmuje czas letni? Dla mnie wydaje się to bardziej prawdopodobne niż stwierdzenie, że wiersz poleceń jest poprawny, a Explorer niepotrzebnie usuwa nasz. Jest to szczególnie prawdziwe, ponieważ zgaduję, że Perl usuwa godzinę (przy założeniu, że raportowany czas jest w DST, kiedy jest on poprawny).
Moshe Katz
@random, uprzejmie nie edytuj mojego posta i całkowicie zmień jego znaczenie! Jeśli chcesz, możesz przeliterować małe liczby, ale nie masz prawa zmieniać mojego pisania. Usunąłeś tag Perla, który jest ważną informacją.
Phil Perry
1
Perl jest przypadkowy i nie jest to problem, z którym masz problemy, a jedynie coś, z czym dokładnie sprawdzasz. Ponadto „błąd” nie opisuje twojego problemu. Próbując uczynić to bardziej oczywistym z tytułu tego, co widzisz.
losowe

Odpowiedzi:

3

Wydaje się, że jest to błąd z DIRwynikami wiersza polecenia , a nie z Eksploratorem Windows.

Jest bardzo łatwy do odtworzenia:

  • Ustaw zegar z powrotem przed rozpoczęciem DST, na przykład 1 marca.
  • Utwórz lub zmodyfikuj plik.
  • Sprawdź czas zegara, a następnie czas pliku w Eksploratorze Windows i za pomocą DIR.
  • Ustaw zegar z powrotem na dzisiaj i prawidłową godzinę.
  • Sprawdź ponownie czas pliku. Zobaczysz, że Eksplorator Windows zachowuje prawidłowy czas, ale DIRwyświetla go godzinę wcześniej.

Na NTFS, czasy plików są przechowywane w UTC, więc wydaje się, że DIRkomenda bierze bieżącego datę za DST pod uwagę podczas konwertowania plików z czasów UTC na czas lokalny. Powinien wykorzystywać czas plików na tę decyzję.

Matt Johnson
źródło
Właściwie, czy DIR (i wywołanie statystyk?) Nie będzie niewłaściwie formatować wcześniejszego czasu, jak w DST (IOW, traktując DST jako działające, nawet jeśli nie było)? Czy w przyszłym listopadzie, kiedy wrócimy do ST, czy DIR pokaże plik zapisany podczas DST godzinę wcześniej niż powinien być? Będę musiał z tym pograć, gdy będę miał okazję, aby dotrzeć do sedna. Tak więc plik zapisany dziś o godzinie 11:00 EDT powinien być wymieniony jako 11:00 pod EST i odwrotnie.
Phil Perry
Zaktualizowałem moją odpowiedź. To nie jest tak, że nie bierze pod uwagę czasu letniego, tylko używa niewłaściwego punktu odniesienia.
Matt Johnson
I przepraszam, mam bardzo małą wiedzę na temat Perla. Domyślam się, że nie ma to nic wspólnego z błędem DIR, ponieważ bazowy czas pliku w NTFS jest zawsze w UTC.
Matt Johnson