DateTime.FromFileTime(Int64) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Konverterar den angivna Windows filtiden till motsvarande lokal tid.
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
Parametrar
- fileTime
- Int64
En Windows filtid uttryckt i fästingar.
Returer
Ett objekt som representerar den lokala tidsekvivalenten för det datum och den tid som representeras av parametern fileTime .
Undantag
fileTime är mindre än 0 eller representerar en tid som är större än DateTime.MaxValue.
Exempel
I följande exempel visas FromFileTime metoden.
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
Kommentarer
En Windows filtid är ett 64-bitars värde som representerar antalet intervall på 100 nanosekunder som har förflutit sedan 12:00 midnatt, 1 januari 1601 e.D. (C.E.) UtC (Coordinated Universal Time). Windows använder en filtid för att registrera när ett program skapar, öppnar eller skriver till en fil.
Parametern fileTime anger en filtid uttryckt i tick på 100 nanosekunder.
Från och med .NET Framework version 2.0 är returvärdet en DateTime vars egenskap Kind är DateTimeKind.Local.
Anteckningar till anropare
Normalt FromFileTime(Int64) återställer metoden ett DateTime värde som sparades av ToFileTime() metoden. De två värdena kan dock variera under följande förhållanden:
Om serialiseringen och deserialiseringen av DateTime värdet sker i olika tidszoner. Om till exempel ett DateTime värde med en tid på 12:30 P.M. i usa: s östra tidszon serialiseras och sedan deserialiseras i U.S. Pacific Time-zonen, justeras det ursprungliga värdet på 12:30 P.M. till 9:30 A.M. för att återspegla skillnaden mellan de två tidszonerna.
Om värdet DateTime som serialiseras representerar en ogiltig tid i den lokala tidszonen. I det här fallet ToFileTime() justerar metoden det återställda DateTime värdet så att det representerar en giltig tid i den lokala tidszonen.
Övergången från standardtid till sommartid sker till exempel i tidszonen usa stillahavsområdet den 14 mars 2010 kl. 02:00, när tiden går framåt med en timme till 03:00. Det här timintervallet är en ogiltig tid, dvs. ett tidsintervall som inte finns i den här tidszonen. Följande exempel visar att när en tid som ligger inom det här intervallet konverteras till ett långt heltalsvärde med ToFileTime() metoden och sedan återställs av FromFileTime(Int64) metoden justeras det ursprungliga värdet för att bli en giltig tid. Du kan avgöra om ett visst datum- och tidsvärde kan ändras genom att skicka det till IsInvalidTime(DateTime) metoden, som exemplet illustrerar.
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