我的程序中有两种日期格式。在一台特定的机器上:

  • date.ToString("M/d/yyyy h:m:s tt")正在产生类似11222013 12:0:0 AM的东西。 (:0:0是可以接受的;它是一个通常不会被人类读取的文件。)
  • date.ToString("MM/dd/yyyy hh:mm tt")正在产生类似11222013 12:00 AM的东西。

  • 我的代码在C#中。使用机器的家伙具有一定的编程经验,并且能够使用Delphi获得相同的行为。为什么在格式化日期中缺少正斜杠?还是我建议他he一下,铺好违规的盒子?

    最佳答案

    custom date and time format string中,不带引号的斜杠只是特定于区域性的 DateTimeFormatInfo.DateSeparator 的占位符(取决于文化,其可以是字符串,例如“-”和“。”)。如果在那台其他计算机上,有人自定义Windows区域设置并从短日期格式中删除了分隔符,则DateTimeFormatInfo.DateSeparator将为空字符串,并且格式化日期将不包含斜线。

    要强制使用斜杠,请在格式字符串中用引号引起来的斜杠,或将CultureInfo.InvariantCulture传递给格式化方法。例如,你可以写

    date.ToString("M'/'d'/'yyyy h:m:s tt")
    

    或者
    date.ToString("M/d/yyyy h:m:s tt", CultureInfo.InvariantCulture)
    

    如果希望在格式化时间中使用“:”和AM/PM而不是本地化值(例如“”),则CultureInfo.InvariantCulture是一个更好的选择。和Mo Mosong/Mo Maitseboeng(南非)。

    08-25 12:04
    查看更多