Directory.SetCreationTime(String, DateTime) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Sets the creation date and time for the specified file or directory.
public:
static void SetCreationTime(System::String ^ path, DateTime creationTime);
public static void SetCreationTime (string path, DateTime creationTime);
static member SetCreationTime : string * DateTime -> unit
Public Shared Sub SetCreationTime (path As String, creationTime As DateTime)
Parameters
- path
- String
The file or directory for which to set the creation date and time information.
- creationTime
- DateTime
The date and time the file or directory was last written to. This value is expressed in local time.
Exceptions
The specified path was not found.
.NET Framework and .NET Core versions older than 2.1: path
is a zero-length string, contains only white space, or contains one or more invalid characters. You can query for invalid characters with the GetInvalidPathChars() method.
path
is null
.
The specified path, file name, or both exceed the system-defined maximum length.
The caller does not have the required permission.
creationTime
specifies a value outside the range of dates or times permitted for this operation.
The current operating system is not Windows NT or later.
Examples
The following example illustrates the differences in output when using Coordinated Universal Time (UTC) output.
// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using namespace System;
using namespace System::IO;
int main()
{
// Set the directory.
String^ n = "C:\\test\\newdir";
//Create two variables to use to set the time.
DateTime dtime1 = DateTime(2002,1,3);
DateTime dtime2 = DateTime(1999,1,1);
//Create the directory.
try
{
Directory::CreateDirectory( n );
}
catch ( IOException^ e )
{
Console::WriteLine( e );
}
//Set the creation and last access times to a variable DateTime value.
Directory::SetCreationTime( n, dtime1 );
Directory::SetLastAccessTimeUtc( n, dtime1 );
// Print to console the results.
Console::WriteLine( "Creation Date: {0}", Directory::GetCreationTime( n ) );
Console::WriteLine( "UTC creation Date: {0}", Directory::GetCreationTimeUtc( n ) );
Console::WriteLine( "Last write time: {0}", Directory::GetLastWriteTime( n ) );
Console::WriteLine( "UTC last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
Console::WriteLine( "Last access time: {0}", Directory::GetLastAccessTime( n ) );
Console::WriteLine( "UTC last access time: {0}", Directory::GetLastAccessTimeUtc( n ) );
//Set the last write time to a different value.
Directory::SetLastWriteTimeUtc( n, dtime2 );
Console::WriteLine( "Changed last write time: {0}", Directory::GetLastWriteTimeUtc( n ) );
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
using System;
using System.IO;
namespace IOSamples
{
public class DirectoryUTCTime
{
public static void Main()
{
// Set the directory.
string n = @"C:\test\newdir";
//Create two variables to use to set the time.
DateTime dtime1 = new DateTime(2002, 1, 3);
DateTime dtime2 = new DateTime(1999, 1, 1);
//Create the directory.
try
{
Directory.CreateDirectory(n);
}
catch (IOException e)
{
Console.WriteLine(e);
}
//Set the creation and last access times to a variable DateTime value.
Directory.SetCreationTime(n, dtime1);
Directory.SetLastAccessTimeUtc(n, dtime1);
// Print to console the results.
Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n));
Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n));
Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n));
Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n));
Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n));
Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n));
//Set the last write time to a different value.
Directory.SetLastWriteTimeUtc(n, dtime2);
Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n));
}
}
}
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
// This sample shows the differences between dates from methods that use
//coordinated universal time (UTC) format and those that do not.
open System
open System.IO
// Set the directory.
let n = @"C:\test\newdir"
//Create two variables to use to set the time.
let dtime1 = DateTime(2002, 1, 3)
let dtime2 = DateTime(1999, 1, 1)
//Create the directory.
try
Directory.CreateDirectory n |> ignore
with :? IOException as e ->
printfn $"{e}"
//Set the creation and last access times to a variable DateTime value.
Directory.SetCreationTime(n, dtime1)
Directory.SetLastAccessTimeUtc(n, dtime1)
// Print to console the results.
printfn $"Creation Date: {Directory.GetCreationTime n}"
printfn $"UTC creation Date: {Directory.GetCreationTimeUtc n}"
printfn $"Last write time: {Directory.GetLastWriteTime n}"
printfn $"UTC last write time: {Directory.GetLastWriteTimeUtc n}"
printfn $"Last access time: {Directory.GetLastAccessTime n}"
printfn $"UTC last access time: {Directory.GetLastAccessTimeUtc n}"
//Set the last write time to a different value.
Directory.SetLastWriteTimeUtc(n, dtime2)
printfn $"Changed last write time: {Directory.GetLastWriteTimeUtc n}"
// Obviously, since this sample deals with dates and times, the output will vary
// depending on when you run the executable. Here is one example of the output:
//Creation Date: 1/3/2002 12:00:00 AM
//UTC creation Date: 1/3/2002 8:00:00 AM
//Last write time: 12/31/1998 4:00:00 PM
//UTC last write time: 1/1/1999 12:00:00 AM
//Last access time: 1/2/2002 4:00:00 PM
//UTC last access time: 1/3/2002 12:00:00 AM
//Changed last write time: 1/1/1999 12:00:00 AM
' This sample shows the differences between dates from methods that use
'coordinated universal time (UTC) format and those that do not.
Imports System.IO
Public Class DirectoryUTCTime
Public Shared Sub Main()
' Set the directory.
Dim n As String = "C:\test\newdir"
'Create two variables to use to set the time.
Dim dtime1 As New DateTime(2002, 1, 3)
Dim dtime2 As New DateTime(1999, 1, 1)
'Create the directory.
Try
Directory.CreateDirectory(n)
Catch e As IOException
Console.WriteLine(e)
End Try
'Set the creation and last access times to a variable DateTime value.
Directory.SetCreationTime(n, dtime1)
Directory.SetLastAccessTimeUtc(n, dtime1)
' Print to console the results.
Console.WriteLine("Creation Date: {0}", Directory.GetCreationTime(n))
Console.WriteLine("UTC creation Date: {0}", Directory.GetCreationTimeUtc(n))
Console.WriteLine("Last write time: {0}", Directory.GetLastWriteTime(n))
Console.WriteLine("UTC last write time: {0}", Directory.GetLastWriteTimeUtc(n))
Console.WriteLine("Last access time: {0}", Directory.GetLastAccessTime(n))
Console.WriteLine("UTC last access time: {0}", Directory.GetLastAccessTimeUtc(n))
'Set the last write time to a different value.
Directory.SetLastWriteTimeUtc(n, dtime2)
Console.WriteLine("Changed last write time: {0}", Directory.GetLastWriteTimeUtc(n))
End Sub
End Class
' Since this sample deals with dates and times, the output will vary
' depending on when you run the executable. Here is one example of the output:
' Creation Date: 1/3/2002 12:00:00 AM
' UTC creation Date: 1/3/2002 8:00:00 AM
' Last write time: 12/31/1998 4:00:00 PM
' UTC last write time: 1/1/1999 12:00:00 AM
' Last access time: 1/2/2002 4:00:00 PM
' UTC last access time: 1/3/2002 12:00:00 AM
' Changed last write time: 1/1/1999 12:00:00 AM
Remarks
The path
parameter is permitted to specify relative or absolute path information. Relative path information is interpreted as relative to the current working directory. To obtain the current working directory, see GetCurrentDirectory.
The case-sensitivity of the path
parameter corresponds to that of the file system on which the code is running. For example, it's case-insensitive on NTFS (the default Windows file system) and case-sensitive on Linux file systems.