2008-10-03 148 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

相關問題