2

我试图在 WPF 文本块中只生成天数,没有前导零,也没有额外的空间填充(这会影响布局)。第一个生成带有空格的日期数,第二个生成整个日期。根据文档,“d”应该产生日期(1-31)。

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

更新:添加 % 确实是诀窍。适当的文档在这里

4

3 回答 3

5

这里

d, %d

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

否则 d 被解释为:

d - '短日期模式'

PS。对于搞乱格式字符串,使用LinqPad是无价的。

于 2008-10-03T01:51:24.303 回答
1

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

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

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

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

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

以 1 到 31 的数字表示月份中的某天。

于 2008-10-03T01:53:13.660 回答
0

{0:d}格式使用MSDN 的标准日期和时间格式字符串文档中定义的模式。'd' 转换为短日期模式,'D' 转换为长日期模式,依此类推。

您想要的格式似乎是自定义日期和时间格式修饰符,当没有匹配的指定格式(例如,'d' 包括空格)或使用 ToString() 时,它可以工作。

您可以改用以下代码:

string.Format("{0}", DateTime.Today.ToString("d ", CultureInfo.InvariantCulture));
于 2008-10-03T01:58:02.960 回答