2016-08-03 41 views
3

下面的代碼:.NET System.Windows.Forms的的DateTimePicker CustomFormat不正確

DateTime dt = new DateTime(2016, 8, 3); 
    dtpStart.Format = DateTimePickerFormat.Custom; 
    dtpStart.CustomFormat = "Mdyyyy"; //format; 
    dtpStart.Value = dt; 
    string s = String.Format("{0:Mdyyyy}", dt); 
    System.Console.Write(s); 

在的DateTimePicker(dtpStart)我看到「8 32016」,其中有月份和日期各左補齊空間爲,而控制檯輸出顯示預期值「832016」

的問題是,我們看到的月,日的這個意外的填充,無論何種格式,我們提供,如:

Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern

+1

邊注:有可能是日期時間格式的不是「Mdyyyy」更糟糕的選擇......「1112016」。 –

+0

根據您的自定義格式**「8 32016」**,使用此字符串s = String.Format(「{0:M dyyyy}」,dt);'。確保您根據需要添加空間。 –

回答

3

DateTimePicker控制是想幫一下忙,讓你用鍵盤手動輸入日期而不是下拉菜單。如果數字顯示不帶空格,則日期不明確。例如,這是否是指什麼日期:

1232016 

它是December 3, 2016January 23, 2016?所以空間是必需的。最好的辦法是給日和月值前導零:

dtpStart.CustomFormat = "MMddyyyy"; 
+0

感謝DavidG。也許我的榜樣選擇不好,但它是爲了說明空格似乎*總是*插入在月和日之前。在我們的生產代碼中,我們希望使用CultureInfo提供的客戶端特定於語言環境的「短日期」格式(例如,1033的M/d/yyyy),但我們也獲得了額外的空間。我會在早上嘗試你的建議,看看我是否可以強制前導零,因爲這可能更容易接受。如果可行,我可能必須創建一組自定義的特定於區域的格式。不過,謝謝你的建議 –