Condividi tramite


DateTime.FromFileTime(Int64) Metodo

Definizione

Converte l'ora specificata di un file di Windows in un'ora locale 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

Parametri

fileTime
Int64

Ora di un file di Windows espressa in tick.

Restituisce

Oggetto che rappresenta l'ora locale equivalente della data e dell'ora rappresentate dal parametro fileTime.

Eccezioni

fileTime è minore di 0 o rappresenta un'ora maggiore di DateTime.MaxValue.

Esempio

Nell'esempio seguente viene illustrato il FromFileTime metodo.

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

Commenti

Un tempo di file di Windows è un valore a 64 bit che rappresenta il numero di intervalli a 100 nanosecondi trascorsi dalle 12:00 mezzanotte, 1 gennaio 1601 A.D. (C.E.) Ora universale coordinata (UTC). Windows usa un'ora di file per registrare quando un'applicazione crea, accede o scrive in un file.

Il fileTime parametro specifica un tempo di file espresso in 100-nanosecondi tick.

A partire da .NET Framework versione 2.0, il valore restituito è un DateTime oggetto la cui Kind proprietà è DateTimeKind.Local.

Note per i chiamanti

In genere, il FromFileTime(Int64) metodo ripristina un DateTime valore salvato dal ToFileTime() metodo . Tuttavia, i due valori possono variare in base alle condizioni seguenti:

  • Se la serializzazione e la deserializzazione del DateTime valore si verificano in fusi orari diversi. Ad esempio, se un DateTime valore con un'ora di 12:30 P.M. nel fuso orario degli Stati Uniti orientali viene serializzato e quindi deserializzato nel fuso orario pacifico degli Stati Uniti, il valore originale di 12:30 P.M. viene modificato alle 9:30 A.M. per riflettere la differenza tra i due fusi orari.

  • Se il DateTime valore serializzato rappresenta un'ora non valida nel fuso orario locale. In questo caso, il ToFileTime() metodo regola il valore ripristinato DateTime in modo che rappresenti un'ora valida nel fuso orario locale.

    Ad esempio, la transizione dall'ora solare all'ora legale si verifica nel fuso orario pacifico degli Stati Uniti il 14 marzo 2010, alle 2:00 A.M., quando l'ora passa da un'ora alle 3:00 A.M. Questo intervallo di ora è un'ora non valida, ovvero un intervallo di tempo che non esiste in questo fuso orario. Nell'esempio seguente viene illustrato che quando un intervallo rientra all'interno di questo intervallo viene convertito in un valore intero lungo dal ToFileTime() metodo e viene quindi ripristinato dal FromFileTime(Int64) metodo, il valore originale viene modificato per diventare un tempo valido. È possibile determinare se un determinato valore di data e ora può essere soggetto alla modifica passandolo al metodo, come illustrato nell'esempio IsInvalidTime(DateTime) .

    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
    

Si applica a

Vedi anche