Existe uma maneira de obter o tempo de criação de um arquivo no Windows com maior precisão? Quero obter o tempo de criação de um vídeo mp4 em milissegundos. Isso é possível?
windows
file-management
Phil
fonte
fonte
ctime
a cópia seja a hora em que foi copiada.stat
para obter todos os três registros de data e hora. Claro, é porque eu normalmente uso o GNU / Linux.Respostas:
Resolução de carimbo de data e hora
O registro de data e hora de criação de um arquivo no Windows depende do sistema de arquivos:
FAT / VFAT tem uma resolução máxima de 2s
NTFS tem uma resolução máxima de 100 ns
solução wmic
Você pode usar
wmic
para recuperar a data de criação do arquivo no microssegundo mais próximo.Exemplo:
A data de criação
20150329221650.080654+060
é um registro de data e hora, com o seguinte formato:Onde:
yyyy
Ano de quatro dígitos (0000 a 9999).mm
Mês de dois dígitos (01 a 12).dd
Dia do mês com dois dígitos (01 a 31).HH
Hora do dia com dois dígitos usando o relógio de 24 horas (00 a 23).MM
Minuto de dois dígitos na hora (00 a 59).SS
Número de dois dígitos de segundos no minuto (00 a 59).xxxxxx
Número de seis dígitos de microssegundos no segundo (000000 a 999999)s
Sinal de mais (+
) ou sinal de menos (-
) para indicar um deslocamento positivo ou negativo do Tempo Universal Coordenado (UTC).UUU
Deslocamento de três dígitos indicando o número de minutos que o fuso horário de origem se desvia do UTC.solução stat
Você também pode usar
stat
(de uma instalação cygwin ou mingw ).Exemplo:
saída dir para comparação
Leitura adicional
fonte
xxxxxx
é o número de seis dígitos de microssegundos no segundo (000000 a 999999) . Micro- , ie10^-6
. Obviamente, o primeiro trigêmeo representa mili- (10^-3
): truncado, não arredondado. O segundo trigêmeo extraído não representa nada em si ... No entanto, algunswmi
valores de data e hora mostram o segundo trigêmeo000
sempre, por exemplo:wmic OS get LocalDateTime
Uma maneira inteligente é demonstrada aqui: /programming/5180592/showing-ntfs-timestamp-with-100-nsec-granularity
Ele está usando o VBScript para consultar o banco de dados CIM do WMI e retornar a
FILETIME
estrutura associada a um arquivo.Também existem ferramentas de código aberto que podem inspecionar os metadados de um arquivo de mídia, como o EXIFtool, voltado para o gerenciamento de metadados da mídia criada por câmeras digitais.
fonte
Eu encontrei uma maneira de obter isso no Matlab:
Você pode usar a função GetFileTime escrita por Jan Simon. Se você não deseja compilar seus próprios arquivos mex, também pode fazer o download dos arquivos compilados aqui .
Não é tão exato quanto usar wmic (apenas ms), mas para o meu propósito é adequado.
fonte
Ele depende do sistema de arquivos : FAT tem 2 segunda resolução, NTFS teoricamente tem 100 resolução ns, mas o real resolução é de 10 ms . Dito isso, as interrupções têm prioridade mais alta que a E / S do disco e não tenho certeza de que o efeito do cache de gravação tenha o carimbo de data / hora. Os temporizadores multimídia são otimizados para precisão, portanto, seria a maneira preferida de implementar o tempo.
Você pode usar uma ferramenta existente, como o XYplorer, para exibir registros de data e hora de alta resolução ou , se preferir, criar seu próprio aplicativo. Use o método File.GetCreationTime ; ele retorna uma estrutura DateTime com propriedade Millisecond .
fonte
wmic
mostra uma resolução para o microssegundo mais próximo .