Windows正在一台机器上删除我约会中的斜线



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

  • 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将是一个更好的选择。

最新更新