Windows正在一台机器上从我的date中删除斜杠

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

  • 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来得到同样的行为。 为什么格式化date中缺less正斜杠? 或者,我应该build议他核实和铺平这个犯罪箱子?

在自定义的日期和时间格式字符串中 ,非加引号的斜杠只是文化特定的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) 

CultureInfo.InvariantCulture将是一个更好的选择,如果你期待“:”和AM / PM在你的格式化时间,而不是像“。”这样的本地化值。 莫莫松/莫迈塞波恩(南非)。