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 ファイル時刻は、1601 年 1 月 1 日午前 0 時から経過した 100 ナノ秒間隔の数を表す 64 ビット値です (C.E.)協定世界時 (UTC)。 Windows では、アプリケーションがファイルを作成、アクセス、またはファイルに書き込むときに、ファイル時刻を使用して記録します。
パラメーターは fileTime
、100 ナノ秒のティックで表されるファイル時刻を指定します。
.NET Framework バージョン 2.0 以降では、戻り値は、 プロパティが DateTimeKind である ですDateTimeKind.Local。
注意 (呼び出し元)
通常、 メソッドはFromFileTime(Int64)、 メソッドによって保存された値をToFileTime()復元DateTimeします。 ただし、次の条件では、2 つの値が異なる場合があります。
値のシリアル化と逆シリアル化が DateTime 異なるタイム ゾーンで発生する場合。 たとえば、米国東部標準時ゾーンの時刻が午後 12 時 30 分の値をシリアル化した後、米国太平洋タイム ゾーンで逆シリアル化した場合 DateTime 、元の値は午前 9 時 30 分に調整され、2 つのタイム ゾーン間の差が反映されます。
シリアル化された DateTime 値がローカル タイム ゾーンの無効な時刻を表す場合。 この場合、 メソッドは ToFileTime() 、ローカル タイム ゾーンの有効な時刻を表すように復元された DateTime 値を調整します。
たとえば、標準時から夏時間への切り替えは、2010 年 3 月 14 日午前 2 時 (時刻が 1 時間進んだ場合) から午前 3 時に米国太平洋標準時ゾーンで発生します。この時間間隔は無効な時間です。つまり、このタイム ゾーンに存在しない時間間隔です。 次の例は、この範囲内にある時刻が メソッドによって長整数に変換され、 メソッドによって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
適用対象
こちらもご覧ください
.NET