Czy istnieje sposób na uzyskanie czasu tworzenia pliku w systemie Windows z większą dokładnością? Chcę uzyskać czas tworzenia wideo MP4 w milisekundach. czy to możliwe?
windows
file-management
Phil
źródło
źródło
ctime
że kopia będzie czasem, kiedy została skopiowana.stat
aby uzyskać wszystkie 3 znaczniki czasu. Oczywiście dlatego, że zwykle używam GNU / Linux.Odpowiedzi:
Rozdzielczość znacznika czasu
Sygnatura czasowa utworzenia pliku w systemie Windows zależy od systemu plików:
FAT / VFAT ma maksymalną rozdzielczość 2 s
NTFS ma maksymalną rozdzielczość 100 ns
rozwiązanie WMIC
Możesz użyć,
wmic
aby pobrać datę utworzenia pliku z dokładnością do mikrosekundy.Przykład:
Data utworzenia
20150329221650.080654+060
jest datownikiem o następującym formacie:gdzie:
yyyy
Czterocyfrowy rok (od 0000 do 9999).mm
Dwucyfrowy miesiąc (od 01 do 12).dd
Dwucyfrowy dzień miesiąca (od 01 do 31).HH
Dwucyfrowa godzina za pomocą 24-godzinnego zegara (od 00 do 23).MM
Dwucyfrowa minuta na godzinę (od 00 do 59).SS
Dwucyfrowa liczba sekund na minutę (od 00 do 59).xxxxxx
Sześciocyfrowa liczba mikrosekund w drugiej (od 000000 do 999999)s
Znak plus (+
) lub znak minus (-
) oznacza dodatnie lub ujemne przesunięcie względem uniwersalnych czasów koordynowanych (UTC).UUU
Trzycyfrowe przesunięcie wskazujące liczbę minut, które początkowa strefa czasowa odbiega od UTC.rozwiązanie stat
Możesz także użyć
stat
(z instalacji cygwin lub mingw ).Przykład:
wyjście reż dla porównania
Dalsza lektura
źródło
xxxxxx
jest sześciocyfrowa liczba mikrosekund w drugiej (od 000000 do 999999) . Micro- , tj10^-6
. Oczywiście pierwszy triplet reprezentuje mili- (10^-3
): obcięty, nie zaokrąglony. Drugi wyodrębniony triplet sam w sobie nie reprezentuje niczego ... Jednak niektórewmi
wartości daty000
iwmic OS get LocalDateTime
Sprytny sposób pokazano tutaj: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-w100-nsec-granularity
Używa VBScript do przeszukiwania bazy danych CMI WMI i zwrócenia
FILETIME
struktury powiązanej z plikiem.Istnieją również narzędzia typu open source, które mogą sprawdzać metadane pliku multimedialnego, takie jak EXIFtool, którego celem jest zarządzanie metadanymi multimediów tworzonymi przez aparaty cyfrowe.
źródło
Znalazłem sposób na uzyskanie tego w Matlabie:
Możesz użyć funkcji GetFileTime napisanej przez Jana Simona. Jeśli nie chcesz kompilować własnych plików mex, możesz również pobrać skompilowane pliki tutaj .
Nie jest tak dokładny jak używanie wmic (tylko ms), ale dla mojego celu jest odpowiedni.
źródło
To zależy od systemu plików : FAT ma rozdzielczość 2 sekundy, NTFS teoretycznie ma rozdzielczość 100 ns, ale rzeczywista rozdzielczość wynosi 10 ms . To powiedziawszy, przerwania mają wyższy priorytet niż dyskowe operacje we / wy i nie jestem pewien, czy buforowanie zapisu ma wpływ na znacznik czasu. Zegary multimedialne są zoptymalizowane pod kątem dokładności, więc byłby preferowanym sposobem realizacji synchronizacji.
Możesz użyć istniejącego narzędzia, takiego jak XYplorer, aby wyświetlić znaczniki czasu w wysokiej rozdzielczości lub możesz napisać własną aplikację. Użyj metody File.GetCreationTime ; zwraca strukturę DateTime z właściwością Millisecond .
źródło
wmic
pokazuje rozdzielczość z dokładnością do najbliższej mikrosekundy .