代码之家  ›  专栏  ›  技术社区  ›  Lews Therin

日期时间格式错误

  •  0
  • Lews Therin  · 技术社区  · 7 年前

    当我在 DotNetFiddle ,我得到我期望的输出:

    var myDate = new DateTime(2019, 6, 1);
    Console.WriteLine(myDate.ToString("MM/dd/yy")); 
    
    // Output is: 06/01/19
    

    但是,当我在一个全新的C#控制台应用程序(.NET Framework 4.5.2)或 C# Interactive 窗口,我得到这个输出:

    06-01-19

    为什么控制台应用程序和C#交互式窗口会取代 / 具有 - 在输出中?基于 this answer 以及 documentation ,我希望日期以 / 不 - . 在这个来自微软文档的例子中,它显示了包含 / :

    Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}", 
                       thisDate2); 
    // The example displays the following output:
    //    The current date and time: 06/10/11 15:24:16 +00:00
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Joel Coehoorn    7 年前

    当使用日期时间格式字符串时 / 性格很特别,就像 d , M ,或 y . 意思是用 system-defined date separator character .

    所以DotNetFiddle的系统日期分隔符是 / ,但系统上的分隔符是 - .

    如果你真的需要 / 字符,此链接文档的摘录将有助于:

    要更改特定日期和时间字符串的日期分隔符,请在文本字符串分隔符中指定分隔符。例如,自定义格式字符串 mm'/'dd'/'yyyy 生成一个结果字符串,其中“/”始终用作日期分隔符。

    小心这个。系统和用户的选择不能轻率。例如,我有时看到人们想这样做是为了格式化一个日期以便在SQL命令中使用,这就是 从未 好的;如果您将日期格式化为SQL的字符串,而不是使用查询参数,那么您就做错了。