DateTime.FromFileTime(Int64) 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 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