C# 在c中将格式化的时间字符串保存为文件名问题#

C# 在c中将格式化的时间字符串保存为文件名问题#,c#,C#,大家好, 我最近才开始学习c#,所以我还不是100%熟悉它的语法,所以我遇到了一个问题。我想将当前时间写入文件名。我正在使用以下代码: DateTime now = DateTime.now; string dateString = string.Format(@"Z:\test\{0}.bmp",now.ToString("s")); bitmap.Save(dateString); 现在这给了我一个无法访问文件路径的错误。显然,它与“:”字符在时间部分有关(至少当我给出now.ToStri

大家好, 我最近才开始学习c#,所以我还不是100%熟悉它的语法,所以我遇到了一个问题。我想将当前时间写入文件名。我正在使用以下代码:

DateTime now = DateTime.now;
string dateString = string.Format(@"Z:\test\{0}.bmp",now.ToString("s"));
bitmap.Save(dateString);
现在这给了我一个无法访问文件路径的错误。显然,它与“:”字符在时间部分有关(至少当我给出now.ToString(“d”)时),它保存的很好。
知道是什么引起的吗?谢谢

某些字符在Windows上的文件名中无效-请参阅。这与c#无关

某些字符在Windows上的文件名中无效-请参阅。这与c#无关

“s”格式将创建类似以下内容的文件名:

2009-06-15T13:45:30.bmp
由于冒号的原因,这不是一个有效的文件名。调用ToString后,用另一个字符替换冒号,或者使用其他格式

请注意,“d”也不总是有效的,因为它可以在名称中包含“/”,具体取决于区域性

就我个人而言,我建议使用类似“yyyyMMdd HHmmss”的东西,它会给你类似

20090615-134530.bmp
“s”格式将创建类似以下内容的文件名:

2009-06-15T13:45:30.bmp
由于冒号的原因,这不是一个有效的文件名。调用ToString后,用另一个字符替换冒号,或者使用其他格式

请注意,“d”也不总是有效的,因为它可以在名称中包含“/”,具体取决于区域性

就我个人而言,我建议使用类似“yyyyMMdd HHmmss”的东西,它会给你类似

20090615-134530.bmp

这是由Windows文件系统导致的,它不允许在文件名中使用

这是由Windows文件系统导致的,它不允许在文件名中使用

“:”是用于命名文件的无效字符。在尝试保存文件之前,您需要确定要替换“:”的其他有效字符。

“:”是用于命名文件的无效字符。在试图保存文件之前,您需要确定要替换“:”的其他有效字符。

文件名中不能有“:”,这就是原因。

文件名中不能有“:”,这就是原因。

无论代码如何,Windows文件系统都不允许使用冒号(或其他几个“特殊”字符)在文件名中。因此,问题发生在操作系统级别,而不是代码中


您需要删除这些字符和/或以其他方式将其用作文件名。

无论代码如何,Windows文件系统都不允许在文件名中使用冒号(或其他几个“特殊”字符)。因此,问题发生在操作系统级别,而不是代码中

public static class SPStringUtils
{
    public static string MakeFilename(this DateTime dt)
    {
        return dt.ToString("yyyyMMdd-HHmmss");
    }

    public static string MakeFilename(this DateTime dt, string format)
    {
        return string.Format(format, MakeFilename(Now));
    }
}

...
Console.WriteLine(Now.MakeFilename(@"c:\logs\log{0}.log");

您需要删除这些字符和/或以其他方式将其用作文件名。

我很幸运,我发现的nice格式不受windows支持。感谢您提供的信息。我很幸运,我发现的nice格式不受windows支持。感谢您提供的信息。啊,那么,我必须解决“-”字符的问题。谢谢。啊,那就用“-”字吧。谢谢。感谢所有的评论,伙计们,使用不同的格式,看起来有点难看,但现在已经接受了。感谢所有的评论,伙计们,使用不同的格式,看起来有点难看,但现在已经接受了。
public static class SPStringUtils
{
    public static string MakeFilename(this DateTime dt)
    {
        return dt.ToString("yyyyMMdd-HHmmss");
    }

    public static string MakeFilename(this DateTime dt, string format)
    {
        return string.Format(format, MakeFilename(Now));
    }
}

...
Console.WriteLine(Now.MakeFilename(@"c:\logs\log{0}.log");