Compartilhar via


DateTime.FromFileTime(Int64) Método

Definição

Converte a hora de arquivo do Windows especificada em uma hora 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

Uma hora de arquivo Windows expressada em tiques.

Retornos

Um objeto que representa a hora local equivalente da hora e hora representadas pelo parâmetro fileTime.

Exceções

fileTime é menor que 0 ou representa uma hora maior que DateTime.MaxValue.

Exemplos

O exemplo a seguir demonstra o FromFileTime método.

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;
   }
}
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

Comentários

Um tempo de arquivo do Windows é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos decorridos desde a meia-noite de 1º de janeiro de 1601 (C.E.) UTC (Tempo Universal Coordenado). O Windows usa uma hora de arquivo a ser registrada quando um aplicativo cria, acessa ou grava em um arquivo.

O fileTime parâmetro especifica um tempo de arquivo expresso em tiques de 100 nanossegundos.

Começando com o .NET Framework versão 2.0, o valor retornado é uma DateTime cuja Kind propriedade é DateTimeKind.Local.

Notas aos Chamadores

Normalmente, o FromFileTime(Int64) método restaura um DateTime valor que foi salvo pelo ToFileTime() método . No entanto, os dois valores podem ser diferentes 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 uma hora de 12h30 no fuso horário do Leste dos EUA for serializado e desserializado no fuso horário do Pacífico dos EUA, o valor original das 12h30 será ajustado para 9h30 para refletir a diferença entre os dois fusos horários.

  • Se o DateTime valor serializado representar uma hora inválida no fuso horário local. Nesse caso, o ToFileTime() método ajusta o valor restaurado DateTime para que ele 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 em 14 de março de 2010, às 2:00 da manhã, quando o tempo avança em uma hora, para 3:00 da manhã. Esse intervalo de hora é um tempo inválido, ou seja, um intervalo de tempo que não existe nesse fuso horário. O exemplo a seguir mostra que quando um tempo que se enquadra nesse intervalo é convertido em um valor inteiro longo pelo ToFileTime() método e, em seguida, é restaurado pelo FromFileTime(Int64) método , o valor original é ajustado para se tornar um tempo válido. É possível determinar se um valor de data e hora específico podem estar sujeito à modificação passando-o para o método IsInvalidTime(DateTime), como o exemplo ilustra.

    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

Confira também