【问题标题】:How to Create a Text Filename with DateTime using C#如何使用 C# 创建带日期时间的文本文件名
【发布时间】:2019-08-08 06:00:27
【问题描述】:

我想用 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”这样的文件名

【问题讨论】:

  • 你想得到什么格式?改用自定义格式怎么样?
  • 如果我使用上面的代码,我的文件被创建为 "ErrorCollector132097177851536974" ,我希望它应该使用 (dd/MM/yyyy) 格式创建。
  • @AshwinKumar 这是如何 ToFileTime 工作的。在编写代码时,最好在使用任何功能之前阅读它的文档。在您的情况下,您可以使用 DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) 例如生成自定义格式的字符串。 docs.microsoft.com/en-us/dotnet/standard/base-types/…
  • 作为另一个建议,通常首选 yyyyMMdd 格式,因为如果您按名称对文件夹中的文件进行排序,最新的文件位于顶部。

标签: c# file datetime filestream


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    c# online

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

    "ddMMyyyy"
    

    "dd-MM-yyyy"
    

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

    【讨论】:

    • / 是基于 unix 的系统(Linux / Mac)中的路径分隔符。因此,将其作为文件名的一部分可能不是一个好的选择。建议您将其替换为文件名允许的字符(例如 -)
    • 谢谢先生,它的工作。
    【解决方案3】:

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

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

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

    .ToString(...) 将 DateTime 对象转换为带有可选格式的字符串作为参数。

    "yyyyMMddHHmmss" 是您希望 DateTime 对象如何以字符串方式映射到的模式。假设您计算机的时钟当前标记为“2019 年 8 月 8 日 12:34:56 PM”,那么:

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

    输出将是20190808123456。请注意,年、月、日、时、分甚至秒的排列方式可以没有特定的顺序。

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

    请注意,我们删除了分隔 DateTime 对象不同部分的特殊字符,以防止在 Windows 上出现文件名问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-11
      • 2012-05-10
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2014-03-16
      • 2011-01-06
      • 2014-02-13
      相关资源
      最近更新 更多