DateTime.FromFileTime(Int64) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převede zadaný čas souboru Systému Windows na ekvivalentní místní čas.
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
Čas souboru systému Windows vyjádřený v ticks.
Návraty
Objekt, který představuje místní čas ekvivalent data a času reprezentovaný parametrem fileTime .
Výjimky
fileTime je menší než 0 nebo představuje čas větší než DateTime.MaxValue.
Příklady
Následující příklad ukazuje metodu FromFileTime .
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
Poznámky
Čas souboru Systému Windows je 64bitová hodnota, která představuje počet intervalů 100 nanosekund, které uplynuly od 12:00 půlnoci, 1. ledna 1601 A.D. (C.E.) Koordinovaný univerzální čas (UTC). Systém Windows používá k zaznamenávání času při vytváření, přístupu nebo zápisu aplikace do souboru.
Parametr fileTime určuje čas souboru vyjádřený 100 nanosekundami.
Počínaje rozhraním .NET Framework verze 2.0 je návratová hodnota, DateTime jejíž Kind vlastnost je DateTimeKind.Local.
Poznámky pro volající
Metoda obvykle FromFileTime(Int64) obnoví DateTime hodnotu uloženou metodou ToFileTime() . Tyto dvě hodnoty se však mohou lišit za následujících podmínek:
Pokud serializace a deserializace DateTime hodnoty dochází v různých časových pásmech. Pokud DateTime je například hodnota s časem 12:30 p.M. v východním časovém pásmu USA serializována a pak deserializována v americkém časovém pásmu Tichomoří, původní hodnota 12:30 P.M. se upraví na 9:30 A.M. tak, aby odrážela rozdíl mezi těmito dvěma časovými pásmy.
DateTime Pokud hodnota serializovaná představuje neplatný čas v místním časovém pásmu. V tomto případě ToFileTime() metoda upraví obnovenou DateTime hodnotu tak, aby představovala platný čas v místním časovém pásmu.
Například přechod ze standardního času na letní čas nastane v americkém tichomořském časovém pásmu 14. března 2010 v 2:00, kdy čas přejde o hodinu do 3:00. Tento hodinový interval je neplatný čas, tj. časový interval, který v tomto časovém pásmu neexistuje. Následující příklad ukazuje, že když je čas, který spadá do tohoto rozsahu, převeden na dlouhou celočíselnou hodnotu ToFileTime() metodou a pak je obnoven metodou FromFileTime(Int64) , původní hodnota je upravena tak, aby se stala platnou dobou. Můžete zjistit, zda konkrétní hodnota data a času může být předmětem úprav, tím, že ji předáte metodě IsInvalidTime(DateTime), jak je znázorněno v příkladu.
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 AMopen 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 AMModule 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