如何使用 C# 创建带有日期时间的文本文件名

How to Create a Text Filename with DateTime using C#

我想用 DateTime.Now 创建一个文件名来存储每天使用异常处理捕获的错误。

我使用了DateTime.ToFileTime,但是附加的格式不是日期格式。

string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt";
string path = "E:\ErrorCollector\ErrorCollector" + DateTime.Now.ToFileTime()+ ".txt";

FileStream fi = new FileStream(path, FileMode.OpenOrCreate);
StreamWriter sw1 = new StreamWriter(fi);
sw1.WriteLine(DateTime.Now + "" + ex.message);

我希望文件名像 "ErrorCollector17/08/2019"

您可以尝试使用ToString 函数与格式。

 DateTime.Now.ToString("dd/MM/yyyy",new System.Globalization.CultureInfo("en-US"));

c# online

正如 Soundararajan 所说,我建议您使用

"ddMMyyyy"

"dd-MM-yyyy"

由于系统会混淆你的路径包含\

您不能创建包含以下任何字符的文件名:/:*?"<>| Windows,您可以这样做

string path = "E:\ErrorCollector\ErrorCollector" + DateTime.Now.ToString("dd-MM-yyyy")+ ".txt"

最短的答案是下面的代码:

DateTime.Now.ToString("yyyyMMddHHmmss", CultureInfo.InvariantCulture);

DateTime.Now 根据您计算机的时钟获取当前日期和时间。

.ToString(...) 将 DateTime 对象转换为字符串,其中包含可选格式作为参数。

"yyyyMMddHHmmss" 是您希望 DateTime 对象如何以字符串方式映射到哪里的模式。假设您计算机的时钟当前设置为 "August 8, 2019 12:34:56 PM",那么:

  • yyyy = 是一个 4 位数的年份,如 2019
  • MM = 是一个 2 位数的月份,例如 08
  • dd = 是一年中的 2 位数日期,例如 08
  • HH = 是 24 小时格式的 2 位数小时,例如 12
  • mm = 是 2 位数分钟如 34
  • ss=是一个2位数的秒如56

并且输出将是 20190808123456。注意年月日时分秒的排列可以不分先后

CultureInfo.InvariantCulture 用于格式化或解析一个字符串,该字符串应该可以由独立于用户本地设置的软件解析(通过 source

请注意,我们删除了分隔 DateTime 对象不同部分的特殊字符,以防止 Windows.

上的文件名出现问题