3

我想使用 DataGridView 显示日期和 DateTimePicker 来实现过滤器。我希望它们都以“G”格式的Standard Date and Time Format显示日期时间。理想情况下,我会做

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。

4

2 回答 2

3

你可以使用:

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

这遵循MSDN 文档中的“G”状态:

“G”标准格式说明符表示短日期(“d”)和长时间(“T”)模式的组合,用空格分隔。

于 2013-05-17T13:36:11.660 回答
1

DateTimePicker 不支持。检查它支持该属性的值:

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

检查当您运行该代码时,实际放入选择器的 CustomFormat 属性的内容是否不是 web.config 中文化的长日期和时间模式。

重要编辑:也许只需将Format属性设置为DateTimePickerFormat.Long即可完成您想要完成的工作。

于 2013-05-17T13:34:35.667 回答