我想在WPF文本块中生成只有一天的数字,没有前导零和没有额外的空间填充(这将抛出布局)。第一个产生一个空格的日期编号,第二个产生整个日期。根据docs,'d'应该产生一天(1-31)。为什么这两种日期格式有所不同?
string.Format("{0:d }", DateTime.Today);
string.Format("{0:d}", DateTime.Today);
更新:添加%确实是个窍门。适当的文档here。
我想在WPF文本块中生成只有一天的数字,没有前导零和没有额外的空间填充(这将抛出布局)。第一个产生一个空格的日期编号,第二个产生整个日期。根据docs,'d'应该产生一天(1-31)。为什么这两种日期格式有所不同?
string.Format("{0:d }", DateTime.Today);
string.Format("{0:d}", DateTime.Today);
更新:添加%确实是个窍门。适当的文档here。
从MSDN文档“自定义日期和时间格式字符串”:
任何字符串,它是不是一个标准的日期 和时间格式字符串被解释 为自定义日期和时间格式 字符串。
{0:d}被解释为标准数据和时间格式字符串。从“标准日期和时间格式字符串”中,“d”格式说明:
表示当前 ShortDatePattern属性定义一个定制的日期和时间 格式字符串。
空格{0:d}与任何标准日期和时间格式字符串不匹配,并且被解释为自定义数据和时间格式字符串。从“自定义日期和时间格式字符串”中,“d”格式说明:
表示月份从1 数到31
当天{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));
还包含一个冗余空间。 – lesscode 2008-10-03 02:05:04
谢谢 - '%' 的伎俩。 http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers中的相应文档部分。 – lesscode 2008-10-03 01:58:21