DateTime
A file name can store the date and time. This clearly identifies the file in a unique way. There are many ways of accomplishing this.
Some methods are clearer to read and easier to modify than others. We include the date, or the date and the time. A format string
is provided.
We use the current date and time as the name for a file on the file system. We call the string.Format
method, and combine it with DateTime.Now
.
string
based on the date and time. We use the string
as a file name.using System; using System.IO; class Program { static void Main() { // Write file containing the date with an extension. string n = string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}.bin", DateTime.Now); File.WriteAllText(n, "aaa"); } }"text-{0:yyyy-MM-dd_hh-mm-ss-tt}.bin" text- The first part of the output required Files will all start with text- {0: Indicates that this is a string placeholder The zero indicates the index of the parameters inserted here yyyy- Prints the year in four digits followed by a dash This has a "year 10000" problem MM- Prints the month in two digits dd_ Prints the day in two digits followed by an underscore hh- Prints the hour in two digits mm- Prints the minute, also in two digits ss- As expected, it prints the seconds tt Prints AM or PM depending on the time of day
Environment.SpecialFolder
You can use this code with Environment.SpecialFolder
. You can encapsulate the logic for this in a property accessor.
string
has 3 placeholders: the directory name we get from SpecialFolder
, the separator char
, and the DateTime
.MyDocuments
folder path. This line uses the SpecialFolder.MyDocuments
enum
value to get the path.Path.DirectorySeparatorChar
. On Windows, this is the backslash—you could just use "\\" in the string instead.DateTime.Now
property.using System; using System.IO; class Program { static string SpecialFileName { get { // Part 1: specify the format string. return string.Format("{0}{1}text-{2:yyyy-MM-dd_hh-mm-ss-tt}.bin", // Part 2: call GetFolderPath. Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), // Part 3: specify separator char. Path.DirectorySeparatorChar, // Part 4: get current time. DateTime.Now); } } static void Main() { Console.WriteLine(SpecialFileName); } }C:\Users\mount\OneDrive\Documents\text-2024-02-01_04-07-57-PM.bin
You can change the string
separators by replacing the underscores and dashes with any other character, excluding some special ones.
We generated file names containing the current date. This is useful for "data dumps" and log files where daily files are written. It helps us organize output files.