DateTime.FromFileTime(Int64) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將指定的 Windows 檔案時間轉換成相等的本地時間。
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
參數
- fileTime
- Int64
Windows 檔案時間以刻度表示。
傳回
物件,表示 fileTime
參數所表示日期和時間的本地時間對應項。
例外狀況
fileTime
小於 0 或表示大於 DateTime.MaxValue的時間。
範例
下列範例示範 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
備註
Windows 檔案時間是 64 位值,代表自 12:00 午夜 1601 A.D. (C.E.) 國際標準時間 (UTC) 以來經過的 100 奈秒間隔數。 當應用程式建立、存取或寫入檔案時,Windows 會使用檔案時間來記錄。
參數 fileTime
會指定以 100 奈秒刻度表示的檔案時間。
從 .NET Framework 2.0 版開始,傳回值為 DateTime 其 Kind 屬性為 DateTimeKind.Local 的 。
給呼叫者的注意事項
一般而言, FromFileTime(Int64) 方法會 DateTime 還原 方法所 ToFileTime() 儲存的值。 不過,這兩個值在下列情況下可能會有所不同:
如果值的序列化和還原序列化 DateTime 發生在不同的時區。 例如,如果 DateTime 美國東部時區中時間為 12:30 的值已序列化,然後在美國太平洋時區還原序列化,則原始值為 12:30 下午 9:30,以反映兩個時區之間的差異。
DateTime如果序列化的值代表當地時區中的無效時間。 在此情況下, ToFileTime() 方法會調整還原 DateTime 的值,使其代表當地時區中的有效時間。
例如,從標準時間到日光節約時間的轉換發生在美國太平洋時區 2010 年 3 月 14 日,上午 2:00,時間在上午 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
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