2014-07-09 55 views
11

我對DateTime的字符串格式有問題。我認爲這是MS中的錯誤。你能解釋一下嗎,什麼是錯的?發佈.NET中字符串格式爲「M」的DateTime.ToString

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(DateTime.Now.ToString("M"));//return 07 July <---- WRONG, SEE MSDN 
     Console.WriteLine(DateTime.Now.ToString(".M"));//return .7 <---- GOOD 
     Console.ReadKey(); 
    } 
} 

MSDN

+0

怎麼樣文化? –

+0

我試過改爲Invariant,en-US,cs-CZ,這是同樣的問題。 – Musketyr

+1

改用「%M」。 –

回答

22

The "M" Custom Format Specifier

如果在沒有其他自定義格式用於 說明符的 「M」 格式說明,它被解釋爲"M" standard date and time format specifier。有關使用單個格式說明符的更多信息,請參閱本主題後面的 (Using Single Custom Format Specifiers)。

Using Single Custom Format Specifiers

自定義日期和時間格式字符串由兩個或兩個以上 字符。日期和時間格式化方法將任何 單字符字符串解釋爲標準日期和時間格式字符串。如果 他們不認可該字符作爲有效的格式說明符,他們 會拋出FormatException例如,僅包含說明符「h」的格式字符串 被解釋爲格式字符串的標準日期和時間 。但是,在這種特殊情況下,由於沒有「h」標準日期和時間格式 說明符,所以拋出的例外是 。

要使用任何自定義的日期和時間的格式說明的作爲格式字符串的唯一 說明符(即,用「d」,「F」,「F」,「G」, 「 h「,」H「,」K「,」m「,」M「,」s「,」t「,」y「,」z「,」:「或」/「 本身),在說明符之前或之後包含一個空格, 或在單個自定義日期和時間說明符之前包含百分比(「%」)格式說明符。

這就是爲什麼你可以使用其中之一;

Console.WriteLine(DateTime.Now.ToString(" M")); // 7 
Console.WriteLine(DateTime.Now.ToString("M ")); //7 
Console.WriteLine(DateTime.Now.ToString("%M")); //7 
+3

+1。這就是我所說的線條之間的閱讀。一切都在OP前面。 OP甚至提供了鏈接。 –

+3

+1。謝謝,這是解決方案。將%置於「%M」中返回正確的值。 – Musketyr

+3

@NikhilAgrawal:我認爲這更像是「閱讀線條」,而不是閱讀線條。 ;-) – Chris

相關問題