DateTime.ToFileTime Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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