131

我想在创建文件时为文件名添加时间戳,但是我尝试过的大多数 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

4

8 回答 8

208

你可以使用这个:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");
于 2012-09-19T17:44:17.333 回答
152

I would use the ISO 8601 format, without separators:

DateTime.Now.ToString("yyyyMMddTHHmmss")
于 2012-09-19T17:48:43.183 回答
21

我有类似的情况,但我想要一种一致的方式来使用文件名中的 DateTime.Parse,所以我选择了

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

当我想解析时,我可以简单地反转 Replace 调用。这样我就不必输入任何 yymmdd 内容或猜测 DateTime.Parse 允许的格式。

于 2016-10-25T23:59:16.640 回答
11

我个人喜欢这样:

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

因为它区分了日期和时间。

于 2016-07-29T21:16:54.120 回答
9

下面列出了最常用的时间格式说明符。,

dd --一个月中的一天,从 01 到 31。

MM -,从 01 到 12。

yyyy——四位数的年份

hh --小时,使用从 01 到 12的12 小时制。

mm -分钟,从 00 到 59。

ss——第二个,从 00 到 59。

HH——小时,使用 00 到 23 之间的24 小时制。

tt -- AM/PM代号。

使用上述方法,您将能够为您的文件名形成一个唯一的名称。

这里我提供了例子

string fileName = "fileName_" + DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss-tt") + ".pdf";

或者

如果你不喜欢使用符号,你也可以试试这个。,

string fileName = "fileName_" + DateTime.Now.ToString("MMddyyyyhhmmsstt") + ".pdf";

希望这对现在或将来的人有所帮助。:)

于 2018-01-31T10:29:10.847 回答
5

使用插值字符串和格式说明符

var filename = $"{DateTime.Now:yyyy.dd.M HH-mm-ss}"

2020 年 1 月 1 日上午 10:40:45 的示例输出:

2020.28.01 10-40-45


或者,如果您想要标准日期格式:

var filename = $"{DateTime.Now:yyyy.M.dd HH-mm-ss}"

2020.01.28 10-40-45


注意:此功能在 C# 6 及更高版本的语言中可用。

于 2018-05-18T02:30:10.560 回答
4

You can try with

var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");
于 2012-09-19T17:46:14.587 回答
2

您可以为您的文件创建一个路径,如下所示:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";
于 2017-08-23T07:53:43.137 回答