DateTime.ToFileTime Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует значение текущего объекта DateTime во временную характеристику файла Windows.
public:
long ToFileTime();
public long ToFileTime ();
member this.ToFileTime : unit -> int64
Public Function ToFileTime () As Long
Возвращаемое значение
Значение текущего объекта DateTime, представленное в виде временной характеристики файла Windows.
Исключения
Получившееся время файла представит дату и время до 0:00 1 января 1601 года нашей эры в формате UTC.
Примеры
В следующем примере демонстрируется 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
Комментарии
Время файла Windows — это 64-разрядное значение, представляющее число 100-наносекундных интервалов, прошедших с 12:00 полуночи, 1 января 1601 г. нашей эры в формате UTC. Windows использует время файла для записи при создании, доступе или записи в файл приложением.
Метод ToFileTime использует Kind это свойство, чтобы определить, является ли текущий DateTime объект локальным временем, временем UTC или неопределенным типом времени, который рассматривается как местное время.
Примечания для тех, кто вызывает этот метод
Обычно метод восстанавливает DateTime значение, FromFileTime(Int64) сохраненное методомToFileTime(). Однако эти два значения могут отличаться в следующих условиях:
— Если сериализация и десериализация DateTime значения происходят в разных часовых поясах. Например, если DateTime значение со временем 12:30 вечера в восточном часовом поясе США сериализуется, а затем десериализуется в тихоокеанском часовом поясе США, исходное значение 12:30 вечера. скорректировано до 9:30 утра. значение , чтобы отразить разницу между двумя часовых поясами.
— Если DateTime значение, сериализованное, представляет недопустимое время в местном часовом поясе. В этом случае метод корректирует восстановленное DateTime значение таким образом, ToFileTime() чтобы оно представляло допустимое время в местном часовом поясе.
Например, переход с стандартного времени на летнее время происходит в тихоокеанском часовом поясе США 14 марта 2010 г. в 2:00, когда время увеличивается на один час до 3:00 утра. Этот интервал часа является недопустимым временем, то есть временным интервалом, который не существует в этом часовом поясе. В следующем примере показано, что когда время, которое попадает в этот диапазон, преобразуется в длинное целочисленное значение ToFileTime() методом и затем восстанавливается методом, исходное значение корректируется, чтобы стать допустимым временем FromFileTime(Int64) . Вы можете определить, может ли конкретное значение даты и времени быть изменено, передав его IsInvalidTime(DateTime) в метод, как показано в примере.
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