DateTime.FromFileTime(Int64) Método

Definição

Converte o tempo especificado do ficheiro Windows para um tempo local equivalente.

public:
 static DateTime FromFileTime(long fileTime);
public static DateTime FromFileTime(long fileTime);
static member FromFileTime : int64 -> DateTime
Public Shared Function FromFileTime (fileTime As Long) As DateTime

Parâmetros

fileTime
Int64

Um tempo de ficheiro do Windows expresso em ticks.

Devoluções

Um objeto que representa o equivalente local em tempo da data e hora representadas pelo fileTime parâmetro.

Exceções

fileTime é inferior a 0 ou representa um tempo superior ao DateTime.MaxValue.

Exemplos

O exemplo seguinte demonstra o FromFileTime método.

open System

let fileAge fileCreationTime =
    let now = DateTime.Now
    try
        let fCreationTime =
            DateTime.FromFileTime fileCreationTime
        now.Subtract fCreationTime
    with :? ArgumentOutOfRangeException ->
        // fileCreationTime is not valid, so re-raise the exception.
        reraise ()
public System.TimeSpan FileAge(long fileCreationTime) {

    System.DateTime now = System.DateTime.Now;
    try {
        System.DateTime fCreationTime =
            System.DateTime.FromFileTime(fileCreationTime);
        System.TimeSpan fileAge = now.Subtract(fCreationTime);
        return fileAge;				
    }
    catch (ArgumentOutOfRangeException) {
        // fileCreationTime is not valid, so re-throw the exception.
        throw;
    }
}
Public Function FileAge(ByVal fileCreationTime As Long) As System.TimeSpan
   Dim now As System.DateTime
   now = System.DateTime.Now

   Try
      Dim fCreationTime As System.DateTime
      Dim fAge As System.TimeSpan
      fCreationTime = System.DateTime.FromFileTime(fileCreationTime)
      fAge = now.Subtract(fCreationTime)
      Return fAge
   Catch exp As ArgumentOutOfRangeException
      ' fileCreationTime is not valid, so re-throw the exception.
      Throw
   End Try
End Function

Observações

Um tempo de ficheiro Windows é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos que decorreram desde as 12:00 da meia-noite de 1 de janeiro de 1601 d.C. (d.C.) Tempo Universal Coordenado (UTC). O Windows utiliza um tempo de ficheiro para registar quando uma aplicação cria, acede ou escreve num ficheiro.

O fileTime parâmetro especifica um tempo de ficheiro expresso em ticks de 100 nanossegundos.

A partir da versão 2.0 do .NET Framework, o valor de retorno é um DateTime cuja propriedade Kind é DateTimeKind.Local.

Notas para Chamadores

Normalmente, o FromFileTime(Int64) método restaura um DateTime valor que foi poupado pelo método ToFileTime() . No entanto, os dois valores podem diferir nas seguintes condições:

  • Se a serialização e desserialização do DateTime valor ocorrerem em fusos horários diferentes. Por exemplo, se um DateTime valor com hora das 12:30 no fuso horário do Leste dos EUA for serializado e depois desserializado no fuso horário do Pacífico dos EUA, o valor original das 12:30 é ajustado para as 9:30 para refletir a diferença entre os dois fusos horários.

  • Se o DateTime valor que está serializado representa uma hora inválida no fuso horário local. Neste caso, o ToFileTime() método ajusta o valor restaurado DateTime para que represente uma hora válida no fuso horário local.

    Por exemplo, a transição do horário padrão para o horário de verão ocorre no fuso horário do Pacífico dos EUA a 14 de março de 2010, às 2:00 da manhã, quando o horário avança uma hora, para as 3:00 da manhã. Este intervalo de uma hora é um tempo inválido, ou seja, um intervalo de tempo que não existe neste fuso horário. O exemplo seguinte mostra que, quando um tempo que se enquadra neste intervalo é convertido num valor inteiro longo pelo ToFileTime() método e depois restaurado pelo FromFileTime(Int64) método, o valor original é ajustado para se tornar um tempo válido. Você pode determinar se um determinado valor de data e hora pode estar sujeito a modificação passando-o para o método IsInvalidTime(DateTime), como ilustra o exemplo.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 00);
          Console.WriteLine("Invalid Time: {0}",
                            TimeZoneInfo.Local.IsInvalidTime(date1));
          long ft = date1.ToFileTime();
          DateTime date2 = DateTime.FromFileTime(ft);
          Console.WriteLine("{0} -> {1}", date1, date2);
       }
    }
    // The example displays the following output:
    //       Invalid Time: True
    //       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    
    open System
    
    let date1 = DateTime(2010, 3, 14, 2, 30, 00)
    printfn $"Invalid Time: {TimeZoneInfo.Local.IsInvalidTime date1}"
    
    let ft = date1.ToFileTime()
    let date2 = DateTime.FromFileTime ft
    printfn $"{date1} -> {date2}"
    
    // The example displays the following output:
    //       Invalid Time: True
    //       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    
    Module Example
       Public Sub Main()
          Dim date1 As New DateTime(2010, 3, 14, 2, 30, 00)
          Console.WriteLine("Invalid Time: {0}", TimeZoneInfo.Local.IsInvalidTime(date1))
          Dim ft As Long = date1.ToFileTime()
          Dim date2 As DateTime = DateTime.FromFileTime(ft)
          Console.WriteLine("{0} -> {1}", date1, date2) 
       End Sub
    End Module
    ' The example displays the following output:
    '       Invalid Time: True
    '       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    

Aplica-se a

Ver também