다음을 통해 공유


DateTime.FromFileTime(Int64) 메서드

정의

지정한 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일 자정(C.E.) 12:00 자정 이후 경과된 100나노초 간격의 수를 나타내는 64비트 값입니다. UTC(협정 세계시). Windows 파일 시간을 사용 하 여 애플리케이션 액세스를 만들거나 파일을 쓸 때 기록.

매개 변수는 fileTime 100나노초 틱으로 표현되는 파일 시간을 지정합니다.

.NET Framework 버전 2.0부터 반환 값은 속성이 인 DateTimeKind 입니다DateTimeKind.Local.

호출자 참고

일반적으로 메서드는 FromFileTime(Int64) 메서드에서 저장 ToFileTime()DateTime 값을 복원합니다. 그러나 다음 조건에 따라 두 값이 다를 수 있습니다.

  • 값의 직렬화 및 역직렬화가 DateTime 서로 다른 표준 시간대에서 발생하는 경우 예를 들어 미국 동부 표준 시간대의 오후 12시 30분 값이 직렬화된 다음 미국 태평양 표준 시간대에서 역직렬화되는 경우 DateTime 원래 값인 오후 12시 30분은 두 표준 시간대의 차이를 반영하도록 오전 9시 30분으로 조정됩니다.

  • DateTime 직렬화된 값이 현지 표준 시간대의 잘못된 시간을 나타내는 경우 이 경우 메서드는 ToFileTime() 로컬 표준 시간대의 유효한 시간을 나타내도록 복원된 DateTime 값을 조정합니다.

    예를 들어 표준시에서 일광 절약 시간제로의 전환은 2010년 3월 14일 오전 2:00에 미국 태평양 표준 시간대에서 발생하며, 시간이 1시간에서 오전 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
    

적용 대상

추가 정보