DateTime.FromFileTime(Int64) Metódus

Definíció

A megadott Windows fájlidőt egyenértékű helyi idővé alakítja.

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

Paraméterek

fileTime
Int64

Egy Windows fájlidő, amely kullancsokban van kifejezve.

Válaszok

Olyan objektum, amely a paraméter által képviselt dátumnak és időnek megfelelő helyi időnek felel meg fileTime .

Kivételek

fileTime kisebb, mint 0, vagy nagyobb időt jelöl, mint a DateTime.MaxValue.

Példák

Az alábbi példa a metódust FromFileTime mutatja be.

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

Megjegyzések

A Windows fájlidő egy 64 bites érték, amely az 1601. január 1-jei éjfél óta eltelt 100 nanoszekundumos intervallumok számát jelöli Koordinált egyetemes idő (UTC). Windows egy fájlidő használatával rögzíti, hogy egy alkalmazás mikor hoz létre, ér el vagy ír egy fájlt.

A fileTime paraméter 100 nanoszekundumos pipákban kifejezett fájlidőt határoz meg.

A .NET Framework 2.0-s verziójától kezdve a visszatérési érték egy DateTime, amelynek Kind tulajdonsága DateTimeKind.Local.

Megjegyzések a hívókhoz

A metódus általában visszaállít egy FromFileTime(Int64) értéket, DateTime amelyet a ToFileTime() metódus mentett. A két érték azonban a következő feltételek mellett eltérhet:

  • Ha az érték szerializálása és deszerializálása DateTime különböző időzónákban történik. Ha például az DateTime Usa keleti időzónájában 12:30-as időpontú érték szerializálva van, majd deszerializálva van az Egyesült Államok csendes-óceáni időzónájában, az eredeti 12:30-as érték 9:30-ra van módosítva, hogy tükrözze a két időzóna közötti különbséget.

  • Ha a DateTime szerializált érték érvénytelen időt jelöl a helyi időzónában. Ebben az esetben a ToFileTime() metódus úgy módosítja a visszaállított DateTime értéket, hogy az érvényes időt jelöl a helyi időzónában.

    A téli időről a nyári időszámításra való áttérés például az Usa csendes-óceáni időzónájában történik 2010. március 14-én, hajnali 2:00-kor, amikor az idő egy órával előrelép, hajnali 3-ra. Ez az óraintervallum érvénytelen idő, vagyis olyan időintervallum, amely ebben az időzónában nem létezik. Az alábbi példa azt mutatja be, hogy ha a metódus hosszú egész értékké ToFileTime() alakít át egy ebbe a tartományba eső időt, majd visszaállítja a FromFileTime(Int64) metódus, az eredeti érték érvényes időként lesz módosítva. A példában látható módon meghatározhatja, hogy egy adott dátum- és időérték módosítható-e azáltal, hogy átadja azt a IsInvalidTime(DateTime) metódusnak.

    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
    

A következőre érvényes:

Lásd még