DateTime.FromFileTime(Int64) Metod

Definition

Konverterar den angivna Windows filtiden till motsvarande lokal tid.

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

Parametrar

fileTime
Int64

En Windows filtid uttryckt i fästingar.

Returer

Ett objekt som representerar den lokala tidsekvivalenten för det datum och den tid som representeras av parametern fileTime .

Undantag

fileTime är mindre än 0 eller representerar en tid som är större än DateTime.MaxValue.

Exempel

I följande exempel visas FromFileTime metoden.

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

Kommentarer

En Windows filtid är ett 64-bitars värde som representerar antalet intervall på 100 nanosekunder som har förflutit sedan 12:00 midnatt, 1 januari 1601 e.D. (C.E.) UtC (Coordinated Universal Time). Windows använder en filtid för att registrera när ett program skapar, öppnar eller skriver till en fil.

Parametern fileTime anger en filtid uttryckt i tick på 100 nanosekunder.

Från och med .NET Framework version 2.0 är returvärdet en DateTime vars egenskap Kind är DateTimeKind.Local.

Anteckningar till anropare

Normalt FromFileTime(Int64) återställer metoden ett DateTime värde som sparades av ToFileTime() metoden. De två värdena kan dock variera under följande förhållanden:

  • Om serialiseringen och deserialiseringen av DateTime värdet sker i olika tidszoner. Om till exempel ett DateTime värde med en tid på 12:30 P.M. i usa: s östra tidszon serialiseras och sedan deserialiseras i U.S. Pacific Time-zonen, justeras det ursprungliga värdet på 12:30 P.M. till 9:30 A.M. för att återspegla skillnaden mellan de två tidszonerna.

  • Om värdet DateTime som serialiseras representerar en ogiltig tid i den lokala tidszonen. I det här fallet ToFileTime() justerar metoden det återställda DateTime värdet så att det representerar en giltig tid i den lokala tidszonen.

    Övergången från standardtid till sommartid sker till exempel i tidszonen usa stillahavsområdet den 14 mars 2010 kl. 02:00, när tiden går framåt med en timme till 03:00. Det här timintervallet är en ogiltig tid, dvs. ett tidsintervall som inte finns i den här tidszonen. Följande exempel visar att när en tid som ligger inom det här intervallet konverteras till ett långt heltalsvärde med ToFileTime() metoden och sedan återställs av FromFileTime(Int64) metoden justeras det ursprungliga värdet för att bli en giltig tid. Du kan avgöra om ett visst datum- och tidsvärde kan ändras genom att skicka det till IsInvalidTime(DateTime) metoden, som exemplet illustrerar.

    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
    

Gäller för

Se även