Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何格式化文件名,使其包含日期和时间以及月份和年份_C#_.net_Winforms_File_Filenames - Fatal编程技术网

C# 如何格式化文件名,使其包含日期和时间以及月份和年份

C# 如何格式化文件名,使其包含日期和时间以及月份和年份,c#,.net,winforms,file,filenames,C#,.net,Winforms,File,Filenames,目前,我正在使用以下文件名存储zip文件 备份-20111010092345.Zip 但我想将文件名更改为..backup-2011-10-10_09:23:45.Zip 我有这个密码 string zipName = Path.Combine(filepath, string.Format("backup-{0}.zip", DateTime.Now.ToString("yyyyMMddhhmmss"))); string backupFilePath = Path.Combine(filep

目前,我正在使用以下文件名存储zip文件

备份-20111010092345.Zip

但我想将文件名更改为..backup-2011-10-10_09:23:45.Zip

我有这个密码

string zipName = Path.Combine(filepath, string.Format("backup-{0}.zip", DateTime.Now.ToString("yyyyMMddhhmmss")));
string backupFilePath = Path.Combine(filepath, backupName);
  using (ZipFile zip = new ZipFile())
  {
    zip.AddFile(backupFilePath, "");
    zip.Save(zipName);

  }



string backupName = "backup.sql";
 string filepath = @"C:\Folder\Back\";
有谁能帮上忙吗。。。 非常感谢

修改代码:

错误:未处理Notsupported异常

这是堆栈跟踪

     at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
   at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
   at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
   at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.File.Move(String sourceFileName, String destFileName)
   at Ionic.Zip.ZipFile.Save()
   at Ionic.Zip.ZipFile.Save(String fileName)

错误:不支持给定路径的格式。

听起来您在构建指定的名称方面几乎做到了-您只需要更改格式字符串

string zipName = Path.Combine(filepath,
    string.Format("backup-{0}.zip",
                  DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss"));
您可以指定为:

string zipName = Path.Combine(filepath,
    string.Format("backup-{0:yyyy-MM-dd_HH:mm:ss}.zip",
                  DateTime.Now));
这取决于你觉得哪个更可读

请注意,这将使用当前区域性的时间分隔符。如果你总是希望它是冒号,那么你应该引用它。另一方面,冒号在Windows文件名中是否是有效字符?考虑再次使用破折号,或类似的东西。例如:

string zipName = Path.Combine(filepath,
    string.Format("backup-{0:yyyy-MM-dd_HH-mm-ss}.zip",
                  DateTime.Now));

您需要使用除以下内容以外的内容:因为它是保留的。我建议如下:

 DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss");

除了内置格式外,您还可以使用DateTime对象的属性(如myDate.Year等)获取该对象的各个组件。这些属性在MSDN中有详细说明:


因此,如果您需要一些非常奇怪的格式,您可以将每个组件中的一个复合字符串以您想要的任何模式组合在一起。

您建议的文件名在Windows上无效,因为它包含“:”character@Max:我刚刚注意到我自己:在这一行zip.SavezipName有一个错误;错误:未处理NotsupportedException,并且给定的路径格式不正确supported@errorcode105:是无效的文件名字符。您不能在Windows文件/目录命名中使用它。@ChristopherCurrens在这个冒号处如何:在这个位置备份-{0:yyyy请您提出解决方案。@errorcode105:那很好-这只是说明在右大括号作为格式说明符之前的其余内容。
 DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss");