Windows正在一台机器上删除我日期的斜杠

时间:2013-11-22 19:51:00

标签: c# .net windows date-formatting

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

  • 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获得同样的行为。为什么格式化日期中缺少正斜线?或者我应该建议他核武并铺好违规的盒子?

1 个答案:

答案 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(南非)。