可以在文件名或扩展名中使用的 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这样的?

159292 次浏览

你可以用这个:

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

你可以试试

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

我会使用 ISO 8601格式,没有分隔符:

DateTime.Now.ToString("yyyyMMddTHHmmss")

我个人喜欢这样:

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

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

我有一个类似的情况,但我想要一个一致的方式,能够使用 DateTime.Parse从文件名,以及,所以我去

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

当我想解析时,我可以简单地逆转 Replace 调用。这样我就不必输入任何 yymmdd 的东西或猜测什么格式的日期时间。解析允许。

您可以为您的文件制定如下路径:

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

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

Dd —— 月份,从01到31。

MM —— 每月,从01到12。

Yyyy —— 年份作为一个四位数字。

Hh —— 小时,使用从01到12的 12小时时钟。

毫米 —— 一分钟,从00到59。

SS —— 第二段,从00到59。

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

TT —— < em > AM/PM 指示符。

使用以上命令,您将能够对您的文件名形成一个唯一的名称。

这里我提供了一个例子

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

或者

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

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

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

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

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

示例输出为2020年1月1日10:40:45 AM:

2020.28.0110-40-45


或者如果你想要一个标准的日期格式:

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

2020.01.2810-40-45


注意: 这个特性在 C # 6和该语言的更高版本中可用。