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

时间:2012-09-19 17:42:55

标签: c# datetime filenames datetime-format

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

9 个答案:

答案 0 :(得分:150)

您可以使用:

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

答案 1 :(得分:85)

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

DateTime.Now.ToString("yyyyMMddTHHmmss")

答案 2 :(得分:11)

我有类似的情况,但我想要一致的方法,以便能够使用文件名中的DateTime.Parse,所以我去了

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

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

答案 3 :(得分:6)

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

  

dd - ,从01到31。

     

MM - ,从01到12。

     

yyyy - 为四位数字。

     

hh - 小时 ,使用 12小时时钟01至12。

     

mm - 分钟 ,从00到59。

     

ss - second ,从00到59。

     

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

     

tt - AM / PM 指示符。

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

这里我提供了示例

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

<强> OR

如果您不喜欢使用符号,也可以尝试使用符号。

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

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

答案 4 :(得分:5)

我个人喜欢这样:

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

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

答案 5 :(得分:3)

您可以尝试使用

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

答案 6 :(得分:2)

您可以为文件创建路径:

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

答案 7 :(得分:1)

使用interpolation字符串&amp; format specifier

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

或者如果你不在美国:

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

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

答案 8 :(得分:-1)

尝试一下:

time.ToLongDateString()
  

输出:“ 2018年8月24日,星期五”

或使用格式:

time.ToString("yyyy_MM_dd")
  

输出:“ 2018_08_24”