我的程序中有两种日期格式。在一台特定的机器上:
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获得同样的行为。为什么格式化日期中缺少正斜线?或者我应该建议他核武并铺好违规的盒子?
答案 0 :(得分:9)
在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(南非)。