我的程序中有两种日期格式。在一台特定的机器上:
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获得同样的行为。为什么格式化日期中缺少正斜杠?还是我应该建议他用核武器制造麻烦?
在自定义日期和时间格式字符串中,不带引号的斜线只是特定于区域性的DateTimeFormatInfo.DateSeparator
的占位符(根据区域性,可以是"-"one_answers"."等字符串)。如果在另一台机器上,有人自定义了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,而不是像"."和Mo Mosong/Mo Maitseboeng(南非)这样的本地化值,CultureInfo.InvariantCulture
将是一个更好的选择。