DateTime.FromFileTime Method

Converts the specified Windows file time to an equivalent local time.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static DateTime FromFileTime(
	long fileTime
)

Parameters

fileTime
Type: System.Int64

A Windows file time expressed in ticks.

Return Value

Type: System.DateTime
An object that represents the local time equivalent of the date and time represented by the fileTime parameter.

ExceptionCondition
ArgumentOutOfRangeException

fileTime is less than 0 or represents a time greater than DateTime.MaxValue.

A Windows file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed since 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC). Windows uses a file time to record when an application creates, accesses, or writes to a file.

The fileTime parameter specifies a file time expressed in 100-nanosecond ticks.

Starting with the .NET Framework version 2.0, the return value is a DateTime whose Kind property is DateTimeKind.Local.

Notes to Callers

Ordinarily, the FromFileTime method restores a DateTime value that was saved by the ToFileTime method. However, the two values may differ under the following conditions:

  • If the serialization and deserialization of the DateTime value occur in different time zones. For example, if a DateTime value with a time of 12:30 P.M. in the U.S. Eastern Time zone is serialized, and then deserialized in the U.S. Pacific Time zone, the original value of 12:30 P.M. is adjusted to 9:30 A.M. to reflect the difference between the two time zones.

  • If the DateTime value that is serialized represents an invalid time in the local time zone. In this case, the ToFileTime method adjusts the restored DateTime value so that it represents a valid time in the local time zone.

    For example, the transition from standard time to daylight saving time occurs in the U.S. Pacific Time zone on March 14, 2010, at 2:00 A.M., when the time advances by one hour, to 3:00 A.M. This hour interval is an invalid time, that is, a time interval that does not exist in this time zone. The following example shows that when a time that falls within this range is converted to a long integer value by the ToFileTime method and is then restored by the FromFileTime method, the original value is adjusted to become a valid time. You can determine whether a particular date and time value may be subject to modification by passing it to the TimeZoneInfo.IsInvalidTime method, as the example illustrates.

    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
    

The following example demonstrates the FromFileTime method.

		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;
			}
		}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft