C# 在c中将格式化的时间字符串保存为文件名问题#
大家好, 我最近才开始学习c#,所以我还不是100%熟悉它的语法,所以我遇到了一个问题。我想将当前时间写入文件名。我正在使用以下代码: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
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");