DateTime.ToString(), который может использоваться в имени файла или расширении?

Я хочу добавить временную метку к именам файлов, поскольку файлы созданы, но большинство методов DateTime, которые я пробовал вывести что-то с пробелами и косой чертой. Например:

Debug.WriteLine(DateTime.Now.ToString()); // <-- 9/19/2012 1:41:46 PM
Debug.WriteLine(DateTime.Now.ToShortTimeString()); // <-- 1:41 PM
Debug.WriteLine(DateTime.Now.ToShortDateString()); // <-- 9/19/2012
Debug.WriteLine(DateTime.Now.ToFileTime()); // <-- 129925501061462806

ToFileTime() работает, но не совсем понятен для человека. Как я могу отформатировать вывод в человеко-читаемую метку времени с датой и временем, которые можно использовать в имени файла или расширении? Предпочтительно что-то вроде 2011-19-9--13-45-30?

Ответ 1

Вы можете использовать это:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");

Ответ 2

Я бы использовал формат ISO 8601 без разделителей:

DateTime.Now.ToString("yyyyMMddTHHmmss")

Ответ 3

У меня подобная ситуация, но я хочу, чтобы последовательный способ иметь возможность использовать DateTime.Parse из имени файла, поэтому я пошел с

DateTime.Now.ToString("s").Replace(":", ".") // <-- 2016-10-25T16.50.35

Когда я хочу разобрать, я могу просто отменить вызов Replace. Таким образом, мне не нужно вводить какие-либо элементы yymmdd или угадывать, какие форматы допускает DateTime.Parse.

Ответ 4

Вы можете попробовать с помощью

var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");

Ответ 5

Вы можете создать путь для своего файла ниже:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";

Ответ 6

Лично мне это нравится:

DateTime.Now.ToString("yyyy-mm-dd hh.mm.ss")

Потому что он отличает дату и время.