我的程序中有两种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在你的格式化时间,而不是像“。”这样的本地化值。 莫莫松/莫迈塞波恩(南非)。