DateTime.FromFileTime(Int64) Metoda

Definicja

Konwertuje określony czas pliku systemu Windows na równoważny czas lokalny.

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

Parametry

fileTime
Int64

Czas pliku systemu Windows wyrażony w kleszczach.

Zwraca

Obiekt reprezentujący lokalny odpowiednik czasu daty i godziny reprezentowany fileTime przez parametr .

Wyjątki

fileTime wartość jest mniejsza niż 0 lub reprezentuje godzinę większą niż DateTime.MaxValue.

Przykłady

W poniższym przykładzie pokazano metodę FromFileTime .

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

Uwagi

Czas pliku systemu Windows to wartość 64-bitowa, która reprezentuje liczbę interwałów 100-nanosekundowych, które upłynęły od 12:00 północy, 1 stycznia 1601 R. (C.E.) Uniwersalny czas koordynowany (UTC). System Windows wykorzystuje czas pliku do rejestrowania informacji o tym, kiedy aplikacja tworzy, uzyskuje dostęp do zapisuje do pliku.

Parametr fileTime określa czas pliku wyrażony w 100-nanosekundowych kleszczach.

Począwszy od .NET Framework w wersji 2.0, zwracana wartość jest właściwością , której DateTimeKind właściwość to DateTimeKind.Local.

Uwagi dotyczące wywoływania

Zazwyczaj FromFileTime(Int64) metoda przywraca wartość zapisaną DateTime przez metodę ToFileTime() . Jednak te dwie wartości mogą się różnić w następujących warunkach:

  • Jeśli serializacja i deserializacja DateTime wartości występują w różnych strefach czasowych. Na przykład, jeśli DateTime wartość o godzinie 12:30 w strefie czasowej wschodniej USA jest serializowana, a następnie deserializowana w strefie czasowej Pacyfik USA, pierwotna wartość 12:30 pm jest dostosowana do 9:30 rano, aby odzwierciedlić różnicę między dwiema strefami czasowymi.

  • DateTime Jeśli wartość serializowana reprezentuje nieprawidłowy czas w lokalnej strefie czasowej. W tym przypadku ToFileTime() metoda dostosowuje przywróconą DateTime wartość tak, aby reprezentuje prawidłowy czas w lokalnej strefie czasowej.

    Na przykład przejście od czasu standardowego do czasu letniego odbywa się w strefie czasowej Pacyfik USA 14 marca 2010 r., o godzinie 2:00, kiedy czas upływa o jedną godzinę, do godziny 3:00 Ten interwał godziny jest nieprawidłowym czasem, czyli interwałem czasu, który nie istnieje w tej strefie czasowej. W poniższym przykładzie pokazano, że gdy czas, który mieści się w tym zakresie, jest konwertowany na wartość długiej liczby całkowitej przez ToFileTime() metodę, a następnie jest przywracany przez FromFileTime(Int64) metodę, oryginalna wartość jest dostosowywana w celu uzyskania prawidłowego czasu. Można określić, czy określona wartość daty i godziny może podlegać modyfikacji, przekazując ją do IsInvalidTime(DateTime) metody, jak pokazano w przykładzie.

    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
    

Dotyczy

Zobacz też