将今天的日期保存到文件名

时间:2014-02-11 16:13:58

标签: c# asp.net asp.net-mvc-3 datetime

尝试在写入文件时将日期包含在文件名中。

DateTime todaysDate = DateTime.Now;
string destFile = System.IO.Path.Combine(targetPath + todaysDate.ToShortDateString() + ".dat");

错误:

 Could not find a part of the path 'C:\Users\John\Desktop\Sales\Import11/02/2014.dat'.

可以将日期更改为_分隔?或任何其他建议来解决这个问题? TA

6 个答案:

答案 0 :(得分:4)

最好以您知道不会与文件路径冲突的方式格式化日期,下划线_-或根本没有分隔符是更好的选择

string destFile = Path.Combine(targetPath, 
    String.Format("{0}.dat", todaysDate.ToString("dd-MM-yyyy")));

答案 1 :(得分:1)

您需要格式化日期,使其没有非法或不需要的字符。

System.IO.Path.Combine(targetPath + todaysDate.ToString("yyyy.MM.dd_HHmmss") + ".dat");

Here is a list of all of the format options for Date and Time.

答案 2 :(得分:0)

尝试使用其他分隔符,例如下划线_

todaysDate.ToString("dd_MM_yyyy_HH_mm_ss");

/不是文件路径的有效字符。您可以使用各种其他字符,只要它们对于文件路径不是非法的。

此MSDN参考应该有所帮助。

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

答案 3 :(得分:0)

使用此:

DateTime todaysDate = DateTime.Now;
string destFile = string.Format("{0}{1:yyyy_MM_dd}.dat" , targetPath, todaysDate);

答案 4 :(得分:0)

你可以试试这个:

var title = String.Format("NameOfYOuWant {0}.log", DateTime.Today.ToShortDateString().Replace('/', '-'))

答案 5 :(得分:0)

我建议:

  • 使用可排序的日期格式,只是因为这是自然令人愉快的
  • 明确指定不变文化,以避免使用不同的日历系统结束的奇怪之处。 (我怀疑你总是想要使用阳历。)
  • 明确指定不会在文件系统路径中导致问题的分隔符(/:执行)

类似于:

string name = string.Format(CultureInfo.InvariantCulture,
                            "Import-{0:yyyy-MM-dd}.dat",
                            DateTime.Today);

// Assuming that targetPath is the directory; it's slightly unclear.
string path = Path.Combine(targetPath, name);

注意:

  • 使用Today,您正在使用系统本地时区。这可能就是你想要的,但你需要明确地考虑它。
  • 你只使用日期,而不是日期和时间 - 那肯定没问题吗?您是否需要在同一天处理多个导入?