Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um de tempo de arquivo é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos decorridos desde as 12h00 de 1º de janeiro de 1601 Tempo Universal Coordenado (UTC). O sistema registra os tempos de arquivo quando os aplicativos criam, acessam e gravam em arquivos.
O sistema de ficheiros NTFS armazena valores de hora no formato UTC, para que não sejam afetados por alterações no fuso horário ou na hora de verão. O sistema de arquivos FAT armazena valores de tempo com base na hora local do computador. Por exemplo, um arquivo que é salvo às 15:00 PST em Washington é visto como 18:00 EST em Nova York em um volume NTFS, mas é visto como 15:00 EST em Nova York em um volume FAT.
Os carimbos de data/hora são atualizados em vários momentos e por vários motivos. A única garantia sobre um carimbo de data/hora de arquivo é que a hora do arquivo é refletida corretamente quando o identificador que faz a alteração é fechado.
Nem todos os sistemas de arquivos podem registrar os tempos de criação e de último acesso, e nem todos os sistemas de arquivos os registram da mesma maneira. Por exemplo, a resolução do tempo de criação no FAT é de 10 milissegundos, enquanto o tempo de escrita tem uma resolução de 2 segundos e o tempo de acesso tem uma resolução de 1 dia, por isso é realmente a data de acesso. O sistema de arquivos NTFS atrasa as atualizações para o último tempo de acesso de um arquivo em até 1 hora após o último acesso.
Para recuperar os tempos de arquivo para um arquivo especificado, use o função GetFileTime. GetFileTime copia a criação, o último acesso e os últimos tempos de gravação para estruturas de FILETIME individuais. Você também pode recuperar tempos de arquivo usando o FindFirstFile e funções de FindNextFile. Essas funções copiam os tempos de arquivo para estruturas de FILETIME em uma estrutura WIN32_FIND_DATA. Ao gravar em um arquivo, o último tempo de gravação não é totalmente atualizado até que todas as alças usadas para gravação sejam fechadas.
Para definir os tempos de arquivo para um arquivo, use o função SetFileTime. Esta função permite-lhe modificar a criação, o último acesso e os últimos tempos de escrita sem alterar o conteúdo do ficheiro. Você pode comparar os tempos de arquivos diferentes usando a funçãoCompareFileTime. A função compara dois tempos de arquivo e retorna um valor que indica qual hora é posterior ou retorna 0 (zero) se os tempos forem iguais.
Se você planeja modificar as horas de arquivo para arquivos especificados, você pode converter uma data e hora do dia em uma hora de arquivo usando a função SystemTimeToFileTime. Você também pode obter a hora do sistema em uma estrutura de FILETIME chamando a funçãoGetSystemTimeAsFileTime.
Para facilitar a exibição de um tempo de arquivo para um usuário, use a funçãoFileTimeToSystemTime. FileTimeToSystemTime converte a hora do arquivo e copia o mês, o dia, o ano e a hora do dia da hora do arquivo para uma estrutura de SYSTEMTIME.
Horário de arquivo e horário de verão
Você deve ter cuidado ao usar os horários de arquivo se o usuário tiver configurado o sistema para ajustar automaticamente para o horário de verão.
Para converter uma hora de arquivo em hora local, use a funçãoFileTimeToLocalFileTime. No entanto, FileTimeToLocalFileTime usa as configurações atuais para o fuso horário e o horário de verão. Portanto, se for o horário de verão, leva em conta o horário de verão, mesmo que o horário do arquivo que você está convertendo seja no horário padrão.
O sistema de ficheiros FAT regista as horas no disco na hora local. GetFileTime recupera tempos UTC armazenados em cache do sistema de arquivos FAT. Quando se torna horário de verão, a hora recuperada pelo GetFileTime fica desligada uma hora, porque o cache não é atualizado. Quando você reinicia o computador, o tempo armazenado em cache que GetFileTime recupera está correto. FindFirstFile recupera a hora local do sistema de arquivos FAT e a converte em UTC usando as configurações atuais para o fuso horário e o horário de verão. Portanto, se for o horário de verão, FindFirstFile leva em conta o horário de verão, mesmo que o horário do arquivo que você está convertendo esteja no horário padrão.
O sistema de ficheiros NTFS regista as horas no disco em UTC. Para levar em conta o horário de verão ao converter um horário de arquivo para um horário local, use a seguinte sequência de funções em vez de usar FileTimeToLocalFileTime:
- FileTimeToSystemTime
- SystemTimeToTzSpecificLocalTime
- SystemTimeToFileTime
Tempos de arquivo e CDFS
Os carimbos de data e hora dos arquivos localizados ou originários da mídia usando o CDFS (Compact Disc File System) são ajustados para o fuso horário local. A ISO 9660 afirma que o CDFS deve exibir as informações de data corretamente para o fuso horário local. Isso é feito para que as datas dos arquivos no CDFS sejam exibidas da mesma forma que as do Universal Disk Format (UDF). UDF é o padrão mais recente para mídia de distribuição. Se o código depender das informações de data não modificadas de um arquivo que reside ou se origina de mídia usando CDFS, ele pode não funcionar corretamente.