2012-01-26 25 views
5

我正在嘗試使用小時部分顯示日期時間字段,但沒有爲單位數小時引導零,如下所示:return string.Format("{0:h}", MyDateTimefield)我得到一個「輸入字符串格式不正確」的錯誤。爲什麼?「輸入字符串的格式不正確」嘗試使用'h'顯示小時部分時發生錯誤

return string.Format("{0:hh}", MyDateTimefield)工程。尋找正確的格式,而不是解決方法。

+0

類型爲「DateTime」的MyDateTimefield?我問,因爲如果是這樣,你可能會返回'MyDateTimefield.ToString(「h」);' – pstrjds

+0

@ pstrjds引發相同的錯誤。 –

+0

我知道你不想要一個解決方法,但MyDateTimefield.Hour.ToString()將工作。 –

回答

14

the pertinent docs來自:

如果「H」格式說明符不與其它自定義格式說明使用的,它被解釋爲一個標準的日期和時間的格式說明符和拋出一個出現FormatException。有關使用單個格式說明符的更多信息,請參閱本主題後面的Using Single Custom Format Specifiers

下面這個鏈接讓你到:

使用任何自定義日期和時間格式說明符作爲格式字符串的唯一符[...],包括之前或符後空間,或者在單個自定義日期和時間說明符之前包含百分比(「%」)格式說明符。

+1

+1好的發現,不知道單個字符的問題。 – pstrjds

+0

我使用了兩種不同格式的字符串cheatsheets,他們沒有提到單個格式說明符。謝謝! –

2

從使用hthis link是小時格式正確,沒有前導0很有意思..以下所有似乎工作:

return string.Format("{0: h}", MyDateTimefield) 
return string.Format("{0:h }", MyDateTimefield) 
return string.Format("{0:h:m}", MyDateTimefield) 

但只要你把return string.Format("{0:h}", MyDateTimefield)它拋出一個異常。

至於爲什麼,我不確定。如果你沒有空間,前兩行應該可以工作。

+0

它不起作用的原因很明顯,單字符格式字符串在.NET中是Special,並且僅被解釋爲「標準格式說明符」。 – millimoose

+0

只要閱讀你的答案。很好的發現。我正在閱讀相同的msdn頁面,但我似乎完全跳過這一節:) – Lester