DateTime.ToFileTime Metoda

Definicja

Konwertuje wartość bieżącego DateTime obiektu na czas pliku systemu Windows.

public:
 long ToFileTime();
public long ToFileTime ();
member this.ToFileTime : unit -> int64
Public Function ToFileTime () As Long

Zwraca

Int64

Wartość bieżącego DateTime obiektu wyrażona jako czas pliku systemu Windows.

Wyjątki

Wynikowa godzina pliku będzie reprezentować datę i godzinę przed 12:00 północą 1 stycznia 1601 C.E. czasu UTC.

Przykłady

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

int main()
{
   System::Console::WriteLine( "Enter the file path:" );
   String^ filePath = System::Console::ReadLine();
   if ( System::IO::File::Exists( filePath ) )
   {
      System::DateTime fileCreationDateTime = System::IO::File::GetCreationTime( filePath );
      __int64 fileCreationFileTime = fileCreationDateTime.ToFileTime();
      System::Console::WriteLine( "{0} in file time is {1}.", fileCreationDateTime, fileCreationFileTime );
   }
   else
   {
      System::Console::WriteLine( "{0} is an invalid file", filePath );
   }
}
open System.IO

printfn "Enter the file path:"
let filePath = stdin.ReadLine()

if File.Exists filePath then
    let fileCreationDateTime =
        File.GetCreationTime filePath

    let fileCreationFileTime = fileCreationDateTime.ToFileTime()

    printfn $"{fileCreationDateTime} in file time is {fileCreationFileTime}."

else
    printfn $"{filePath} is an invalid file"
static void Main(string[] args)
{
    System.Console.WriteLine("Enter the file path:");
    string filePath = System.Console.ReadLine();

    if (System.IO.File.Exists(filePath)) {
        System.DateTime fileCreationDateTime =
            System.IO.File.GetCreationTime(filePath);

        long fileCreationFileTime = fileCreationDateTime.ToFileTime();

        System.Console.WriteLine("{0} in file time is {1}.",
                                 fileCreationDateTime,
                                 fileCreationFileTime);
    }
    else {
        System.Console.WriteLine("{0} is an invalid file", filePath);
    }
}
Public Shared Sub Main()

   System.Console.WriteLine("Enter the file path:")
   Dim filePath As String
   filePath = System.Console.ReadLine()

   If System.IO.File.Exists(filePath) Then
      Dim fileCreationDateTime As System.DateTime
      fileCreationDateTime = System.IO.File.GetCreationTime(filePath)

      Dim fileCreationFileTime As Long
      fileCreationFileTime = fileCreationDateTime.ToFileTime()

      System.Console.WriteLine("{0} in file time is {1}.", _
                               fileCreationDateTime, _
                               fileCreationFileTime)
   Else
      System.Console.WriteLine("{0} is an invalid file", filePath)
   End If
End Sub

Uwagi

Czas pliku systemu Windows ma wartość 64-bitową. Reprezentuje ona liczbę 100-nanosekundowych przedziałów czasu, które upłynęły od północy 1 stycznia 1601 roku n.e. (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.

Metoda ToFileTime używa Kind właściwości , aby określić, czy bieżący DateTime obiekt jest czasem lokalnym, czasem UTC, czy nieokreślonym rodzajem czasu, który jest traktowany jako czas lokalny.

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 we wschodniej strefie czasowej USA jest serializowany, a następnie deserializowany w strefie czasowej Pacyfik USA, oryginalna wartość 12:30 PM. jest dostosowywany do 9:30 aby odzwierciedlić różnicę między dwiema strefami czasowymi.

  • Jeśli DateTime 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 strefie czasu pacyficznego w Stanach Zjednoczonych przejście od czasu standardowego do czasu letniego nastąpi 14 marca 2010 r. o godzinie 2:00, kiedy czas jest przesuwany o jedną godzinę — na 3:00. Ten interwał godzinowy jest nieprawidłowy, czyli jest to przedział czasu, który nie istnieje w danej 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

Dotyczy

Zobacz też