DateTime.Now作为文件名

时间:2013-11-27 09:29:33

标签: c#

我想提供一个我以编程方式创建的文档,其中包含返回值DateTime.Now.ToString();

当“:”符号是文件名的内容时,试用失败。

任何想法?

5 个答案:

答案 0 :(得分:4)

避免像这样的文化问题

DateTime.Now.ToString("yyyy-MMdd-HH-mm", CultureInfo.InvariantCulture)

你也可以尝试

string n = string.Format("typeoffile-{0:yyyy-MM-dd_hh-mm-ss-tt}.ext",
        DateTime.Now);

试试这会对你有用

String.Replace(".","_")

上交

   DateTime.Now.ToString().Replace(".","_")

答案 1 :(得分:4)

我会指定DateTime.ToString()的格式,例如:

DateTime.Now.ToString("yyyyMMddhhmmss") //results in "20131127103249"

如果你想转到String.Replace路线,我建议利用名为Path.GetInvalidFileNameChars()的有用方法:

string s = DateTime.Now.ToString();
foreach (char c in Path.GetInvalidFileNameChars()) // replace all invalid characters with an underscore
{
    s = s.Replace(c, '_');
}

或者,如果你涉及整个简洁的事情,你可以使用LINQ在单行中做同样的事情:

var s = new String(DateTime.Now.ToString().Select(ch => Path.GetInvalidFileNameChars().Any(invalid => invalid == ch) ? '_' : ch).ToArray());

答案 2 :(得分:2)

您可以使用替换功能将:替换为_

DateTime.Now.ToString().Replace(":","_");

答案 3 :(得分:1)

为什么不尝试删除“:”符号,即文件名为:

20131127_0530

DateTime.Now.ToString("yyyyddMM_HHmm")

答案 4 :(得分:0)

您应该使用自定义ToString方法指定格式化程序,即:

DateTime.Now.ToString(“ddMMyyyy”) - 显示一个月的