2008-10-03 163 views
2

我想在WPF文本块中生成只有一天的数字,没有前导零和没有额外的空间填充(这将抛出布局)。第一个产生一个空格的日期编号,第二个产生整个日期。根据docs,'d'应该产生一天(1-31)。为什么这两种日期格式有所不同?

string.Format("{0:d }", DateTime.Today); 
string.Format("{0:d}", DateTime.Today); 

更新:添加%确实是个窍门。适当的文档here

回答

5

here

d,%d

月的一天。一位数天没有前导零。如果格式模式未与其他格式模式组合,则应用程序指定“%d”。

否则d被解释为:

d - 'ShortDatePattern'

PS。为了解决格式化字符串问题,使用LinqPad是非常宝贵的。

+0

谢谢 - '%' 的伎俩。 http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers中的相应文档部分。 – lesscode 2008-10-03 01:58:21

1

从MSDN文档“自定义日期和时间格式字符串”:

任何字符串,它是不是一个标准的日期 和时间格式字符串被解释 为自定义日期和时间格式 字符串。

{0:d}被解释为标准数据和时间格式字符串。从“标准日期和时间格式字符串”中,“d”格式说明:

表示当前 ShortDatePattern属性定义一个定制的日期和时间 格式字符串。

空格{0:d}与任何标准日期和时间格式字符串不匹配,并且被解释为自定义数据和时间格式字符串。从“自定义日期和时间格式字符串”中,“d”格式说明:

表示月份从1 数到31

0

当天{0:d}格式使用模式在Standard Date and Time Format Strings document of MSDN中定义。 'd'表示短日期模式,'D'表示长日期模式,等等。

您想要的格式似乎是Custom Date and Time Format Modifiers,当没有指定的格式匹配时(例如,'d'包含空格)或使用ToString()时,格式会起作用。

你可以使用下面的代码来代替:

string.Format("{0}", DateTime.Today.ToString("d ", CultureInfo.InvariantCulture)); 
+0

还包含一个冗余空间。 – lesscode 2008-10-03 02:05:04

相关问题