我的程序中有两种日期格式。在一台特定的机器上:
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 获得相同的行为。为什么格式化日期中缺少正斜杠?或者我应该建议他核弹并铺平有问题的盒子?
最佳答案
在 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)
CultureInfo.InvariantCulture
如果您希望在您的格式化时间中使用“:”和 AM/PM 而不是像“.”这样的本地化值,那将是更好的选择。和 Mo Mosong/Mo Maitseboeng(南非)。
关于c# - Windows 正在从我在一台机器上的日期中删除斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153340/