29Aug

W jaki sposób Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy?

Co to znaczy, gdy masz dwa identyczne pliki z identycznymi znacznikami czasu, ale Windows mówi, że jeden plik jest nowszy od drugiego? Jak to możliwe? Dzisiejszy post SuperUser Q & A pomaga pomylonym czytelnikom rozwiązać zagadkę czasu.

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.

Pytanie Czytnik

SuperUser WBT chce wiedzieć, w jaki sposób system Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy:

Kiedy system Windows wyświetla takie okno dialogowe z pasującymi znacznikami czasu, w jaki sposób określa, który z dwóch plików jest nowszy?

Początkowo myślałem, że system Windows porównuje datę utworzenia atrybutu i używa wyniku tego porównania do oznaczenia jednego lub drugiego jako nowszego. Jeśli plik został skopiowany do określonej lokalizacji, może mieć datę utworzenia kopii, a nie datę utworzenia oryginalnego pliku. Jednak po odtworzeniu go z innym plikiem, wynik, z którego jeden jest nowszy, wydaje się być odwrotny:

Wynik jest taki sam niezależnie od tego, czy kopiuje się, czy przenosi plik:

A dla tła plik w teście2 jest poprzednio utworzoną kopiąplik w teście1.

W jaki sposób system Windows decyduje, który z dwóch plików z identycznymi znacznikami czasu jest nowszy?

Odpowiedź Odpowiedzialności

SuperUser grawity ma dla nas odpowiedź:

Znaczniki czasu w systemie plików NTFS mają rozdzielczość 100 nanosekund( 0.0000001 s).Nawet jeśli okno dialogowe właściwości pokazuje tę samą zaokrągloną wartość, może to oznaczać, że pliki zostały utworzone w dziesiątych częściach sekundy.

Uwaga: Większość systemów plików mierzy czasy w μs lub ns. FAT32 to trochę reliktu i zaokrągla sygnatury czasowe do dwóch sekund.

Wypróbuj jedną z następujących metod porównywania pełnych znaczników czasu:

  • plik danych wmic, gdzie nazwa = "c: \\ foo \\ bar.txt" zostaje zmodyfikowana

Przez PowerShell:

  • ( Get-ChildItem c: \ foo \ bar.txt). LastWriteTime. ToString( "o")

Czy chcesz coś dodać do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.

Image Credit: WBT( SuperUser)