我正在尝试仅在WPF文本块中生成日期编号,没有前导零并且没有额外的空间填充(这会抛弃布局)。第一个产生带有空格的日期编号,第二个产生整个日期。根据{{3}},'d'应该产生一天(1-31)。
string.Format("{0:d }", DateTime.Today);
string.Format("{0:d}", DateTime.Today);
更新:添加%确实是诀窍。适当的文档docs。
答案 0 :(得分:5)
请参阅here
d,%d
该月的某一天。单位数天没有前导零。如果格式模式未与其他格式模式组合,则应用程序指定“%d”。
否则d被解释为:
d - 'ShortDatePattern'
PS。对于搞乱格式字符串,使用LinqPad是非常宝贵的。
答案 1 :(得分:1)
从“自定义日期和时间格式字符串”的MSDN文档:
任何非标准日期的字符串 和时间格式字符串被解释 作为自定义日期和时间格式 字符串。
{0:d}被解释为标准数据和时间格式字符串。从“标准日期和时间格式字符串”,“d”格式说明符:
表示自定义日期和时间 格式字符串由当前定义 ShortDatePattern属性。
对于空格,{0:d}与任何标准日期和时间格式字符串都不匹配,并被解释为自定义数据和时间格式字符串。从“自定义日期和时间格式字符串”,“d”格式说明符:
表示当月的日期 数字从1到31。
答案 2 :(得分: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));