Есть ли способ получить время создания файла в Windows с большей точностью? Я хочу получить время создания mp4-видео в миллисекундах. Это возможно?
13
Есть ли способ получить время создания файла в Windows с большей точностью? Я хочу получить время создания mp4-видео в миллисекундах. Это возможно?
ctime
копию моментом ее копирования.stat
чтобы получить все 3 метки времени. Конечно, это потому, что я обычно использую GNU / Linux.Ответы:
Разрешение отметки времени
Метка времени создания файла в Windows зависит от файловой системы:
FAT / VFAT имеет максимальное разрешение 2 с
NTFS имеет максимальное разрешение 100 нс
wmic решение
Вы можете использовать,
wmic
чтобы получить дату создания файла с точностью до микросекунды.Пример:
Дата создания
20150329221650.080654+060
- это временная метка в следующем формате:где:
yyyy
Четырехзначный год (от 0000 до 9999).mm
Двузначный месяц (с 01 по 12).dd
Двузначный день месяца (с 01 по 31).HH
Двузначные часы дня с использованием 24-часовых часов (с 00 по 23).MM
Двухзначная минута в часе (от 00 до 59).SS
Двузначное количество секунд в минуте (от 00 до 59).xxxxxx
Шестизначное число микросекунд в секунде (от 000000 до 999999)s
Знак плюс (+
) или знак минус (-
) указывает положительное или отрицательное смещение относительно всемирного координированного времени (UTC).UUU
Трехзначное смещение, указывающее количество минут, которое исходный часовой пояс отклоняется от UTC.стат решение
Вы также можете использовать
stat
(из установки Cygwin или Mingw ).Пример:
вывод dir для сравнения
Дальнейшее чтение
источник
xxxxxx
- шестизначное число микросекунд в секунду (от 000000 до 999999) . Микро- , то есть10^-6
. Конечно, первый триплет представляет собой mili- (10^-3
): усеченный, а не округленный. Второй извлеченный триплет ничего не представляет сам по себе ... Однако некоторыеwmi
значения даты и времени000
всегда показывают второй триплет , напримерwmic OS get LocalDateTime
Умный способ демонстрируется здесь: /programming/5180592/showing-ntfs-timestamp-with-100-nsec-granularity
Он использует VBScript для запроса базы данных CIM WMI и возврата
FILETIME
структуры, связанной с файлом.Существуют также инструменты с открытым исходным кодом, которые могут проверять метаданные медиа-файла, такие как EXIFtool, который предназначен для управления метаданными медиа-файлов, созданных цифровыми камерами.
источник
Я нашел способ, как получить это в Matlab:
Вы можете использовать функцию GetFileTime, написанную Яном Саймоном. Если вы не хотите компилировать свои собственные mex-файлы, вы также можете скачать скомпилированные файлы здесь .
Это не так точно, как использование wmic (только мс), но для моей цели это подходит.
источник
Это зависит от файловой системы : FAT имеет разрешение 2 секунды, NTFS теоретически имеет разрешение 100 нс, но фактическое разрешение составляет 10 мс . Тем не менее, прерывания имеют более высокий приоритет, чем дисковый ввод-вывод, и я не уверен, что кэширование записи влияет на отметку времени. Таймеры мультимедиа оптимизированы для точности, поэтому предпочтительнее было бы реализовать синхронизацию.
Вы можете использовать существующий инструмент, такой как XYplorer, для просмотра меток времени с высоким разрешением, или , вы можете написать собственное приложение. Используйте метод File.GetCreationTime ; он возвращает структуру DateTime с миллисекундным свойством.
источник
wmic
видно, что в NTFS отображается разрешение с точностью до микросекунды .