2013-05-17 75 views
2

我想使用DataGridView顯示日期和DateTimePicker來實現過濾器。我希望他們都以「G」格式的Standard Date and Time Format顯示日期時間。理想情況下,我只是做.Net獲取DateTimeFormat「G」

dateTimePicker1.CustomFormat = "G"; 

但這似乎並不奏效。 (它實際上在DateTimePicker中顯示字符「G」。)我發現了以下解決方法,但對我而言看起來很脆弱和麻煩。

DateTime now = DateTime.Now; 
dateTimePicker1.Format = DateTimePickerFormat.Custom; 
dateTimePicker1.CustomFormat = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns('G')[0]; 
dateTimePicker1.Value = now; 

dataGridView.Rows.Add(now); 

任何改進建議?

編輯:添加了我設置dateTimePicker1.Format。

回答

2

你可以使用:

var formatInfo = CultureInfo.CurrentCulture.DateTimeFormat; 
string pattern = formatInfo.ShortDatePattern + " " + formatInfo.LongTimePattern; 

這是繼什麼MSDN docs for 'G'狀態:

的 「G」 標準格式說明表示短日期( 「d」)的組合,並且很長一段時間(「T」)模式,由空格分隔。

+0

'formatInfo.ShortDatePattern +「」+ formatInfo.LongTimePattern'對於他已經擁有和聲明的'formatInfo.GetAllDateTimePatterns('G')[0]'沒有多大的意義。 –

+0

@JeppeStigNielsen:嗯,這是一個選擇。它也許更有效率,但這不太可能相關。 –

+0

我最終堅持使用原來的解決方案。我很欣賞MSDN和其他替代解決方案的鏈接。我沒有在自己的搜索中找到任何關於[G]被正式定義爲[DateTime.ToString()]的默認值的內容(http://msdn.microsoft.com/zh-cn/library/ zdtaw1bw.aspx)。 –

1

DateTimePicker不支持。檢查它支持的值,該屬性:

http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.customformat.aspx

檢查時運行的代碼,有什麼實際上正在把你的選擇器的CustomFormat屬性是不是爲文化在漫長的日期和時間模式你的web.config。

重要編輯:也許只是Format屬性設置爲DateTimePickerFormat.Long會得到你想要做的事情。

+1

我應該提到這個問題(我的壞),我將Format屬性設置爲DateTimePickerFormat.Custom。 DateTimePickerFormat.Long只顯示日期,但我想顯示日期和時間。 –