2013-05-17 2 views
2

Я хочу использовать DataGridView для отображения даты и DateTimePicker для реализации фильтра. Я хочу, чтобы оба они отображали дату в формате «G» Standard Date and Time Format. В идеале я бы просто сделал.Net get DateTimeFormat «G»

dateTimePicker1.CustomFormat = "G"; 

но это не работает. (Он буквально отображает символ «G» в DateTimePicker.) Я нашел следующее обходное решение, но кажется хрупким и громоздким для меня.

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' состояния:

«Г» стандартный формат спецификатор представляет собой сочетание короткой даты («D») и долгое время («T»), разделенных пробелом.

+0

'formatInfo.ShortDatePattern +" "+ formatInfo.LongTimePattern' не является большим количеством одобрения по сравнению с' formatInfo.GetAllDateTimePatterns ('G') [0] 'у него уже есть и претензии работают. –

+0

@ JeppeStigNielsen: Ну, это альтернатива. Это может быть и более эффективным, но это вряд ли будет актуальным. –

+0

Я закончил тем, что придерживался своего оригинального решения. Я ценю ссылку на MSDN и другое альтернативное решение. Я не нашел ничего в своих собственных поисках о том, что «G» официально было определено иначе, чем это было по умолчанию для [DateTime.ToString()] (http://msdn.microsoft.com/en-us/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 показывает только дату, но я хочу отображать дату и время. –

Смежные вопросы