可以在文件名或扩展名中使用的DateTime.ToString()格式吗?


100

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


2
怎么样... DateTime.Now.ToString(“ yyyy-MM-dd--hh-mm-ss”)
基因S

Answers:


177

您可以使用此:

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

5
您可以在此处查看更多示例/选项:geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm
Kristof Claes

1
我想考虑使用utc时间会更好
RealSteel

89
您是否认真建议将日期设置为年和月之间?
kjbartel

10
文件名更不可原谅,因为文件列表无法按名称排序以按日期时间顺序获取它们。最重要到最不重要应该是一天中的顺序。
伯恩哈德·霍夫曼

4
@Matt-您假设文件名与创建/修改/访问日期有关,但并非总是如此。
伯恩哈德·霍夫曼

121

我将使用没有分隔符的ISO 8601格式:

DateTime.Now.ToString("yyyyMMddTHHmmss")

7
如果您使用DateTime.Now.ToString("o"),它将为您提供yyyy-MM-ddTHH:mm:ss.fffffff-HH:mm(最后的小时和分钟偏移为+/- GMT)。当然,这不能作为文件名格式使用,但是"o"格式很了解。
krillgar 2014年

16

我也有类似的情况,但是我也希望能够使用一致的方式来从文件名中使用DateTime.Parse,所以我选择了

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

当我想解析时,我可以简单地撤消Replace调用。这样,我不必键入任何yymmdd东西,也不必猜测DateTime.Parse允许的格式。


8

以下是最常用的时间格式说明符列表。

DD -月的,从01到31。

MM -月份,从01到12。

yyyy-为四位数。

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

毫米 -分钟,从00到59。

SS -第二,从00至59。

HH -小时,使用 24小时时钟从00到23。

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";

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


7

我个人喜欢这种方式:

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

因为它区分日期和时间。


1
我猜你的意思是“ yyyy-MM-dd HH.mm.ss”
Filimindji


3

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

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

或者,如果您不在美国:

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

此功能在C#6和更高版本的语言中可用。


2

您可以为以下文件创建路径:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.