我的程序中有两种日期格式。在一台特定的机器上:
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(南非)。