DateTime.ToFileTime Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Converts the value of the current DateTime object to a Windows file time.

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

Syntax

Public Function ToFileTime As Long
public long ToFileTime()

Return Value

Type: System..::.Int64
The value of the current DateTime object expressed as a Windows file time.

Exceptions

Exception Condition
ArgumentOutOfRangeException

The resulting file time would represent a date and time before 12:00 midnight January 1, 1601 C.E. UTC.

Remarks

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 ToFileTime method uses the Kind property to determine whether the current DateTime object is a local time, a UTC time, or an unspecified kind of time which is treated as a local time.

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 PM 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.

    Module Example
       Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
          Dim date1 As New DateTime(2010, 3, 14, 2, 30, 0)
          outputBlock.Text += String.Format("Invalid Time: {0}", TimeZoneInfo.Local.IsInvalidTime(date1)) & vbCrLf
          Dim ft As Long = date1.ToFileTime()
          Dim date2 As DateTime = DateTime.FromFileTime(ft)
          outputBlock.Text += String.Format("{0} -> {1}", date1, date2) & vbCrLf
       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
    
    using System;
    
    public class Example
    {
       public static void Demo(System.Windows.Controls.TextBlock outputBlock)
       {
          DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 00);
          outputBlock.Text += String.Format("Invalid Time: {0}",
                            TimeZoneInfo.Local.IsInvalidTime(date1)) + "\n";
          long ft = date1.ToFileTime();
          DateTime date2 = DateTime.FromFileTime(ft);
          outputBlock.Text += String.Format("{0} -> {1}", date1, date2) + "\n";
       }
    }
    // The example displays the following output:
    //       Invalid Time: True
    //       3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
    

Examples

The following example demonstrates the ToFileTime method.

Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

   outputBlock.Text &= "Enter the file path:" & vbCrLf
   Dim filePath As String
   filePath = System.Console.ReadLine()

   If System.IO.File.Exists(filePath) Then
      Dim fileCreationDateTime As System.DateTime
      fileCreationDateTime = System.IO.File.GetCreationTime(filePath)

      Dim fileCreationFileTime As Long
      fileCreationFileTime = fileCreationDateTime.ToFileTime()

      outputBlock.Text &= String.Format("{0} in file time is {1}.", _
                               fileCreationDateTime, _
                               fileCreationFileTime) & vbCrLf
   Else
      outputBlock.Text &= String.Format("{0} is an invalid file", filePath) & vbCrLf
   End If
End Sub
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
   outputBlock.Text += "Enter the file path:" + "\n";
   string filePath = System.Console.ReadLine();

   if (System.IO.File.Exists(filePath))
   {
      System.DateTime fileCreationDateTime =
         System.IO.File.GetCreationTime(filePath);

      long fileCreationFileTime = fileCreationDateTime.ToFileTime();

      outputBlock.Text += String.Format("{0} in file time is {1}.",
                         fileCreationDateTime,
                         fileCreationFileTime) + "\n";
   }
   else
   {
      outputBlock.Text += String.Format("{0} is an invalid file", filePath) + "\n";
   }
}

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

DateTime Structure

System Namespace

ToFileTimeUtc

Int64

ToUniversalTime