C# .Net get DateTimeFormat“;G";

C# .Net get DateTimeFormat“;G";,c#,.net,datetimepicker,C#,.net,Datetimepicker,我想使用DataGridView显示日期,并使用DateTimePicker实现过滤器。我希望它们都以“G”格式显示日期时间。理想情况下,我会这样做 dateTimePicker1.CustomFormat = "G"; 但这似乎不起作用。(它字面上在DateTimePicker中显示字符“G”)我找到了以下解决方法,但对我来说似乎很脆弱和麻烦 DateTime now = DateTime.Now; dateTimePicker1.Format = DateTimePickerFormat.

我想使用DataGridView显示日期,并使用DateTimePicker实现过滤器。我希望它们都以“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。

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

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

重要编辑:可能只需将属性设置为即可完成所需操作。

您可以使用:

var formatInfo = CultureInfo.CurrentCulture.DateTimeFormat;
string pattern = formatInfo.ShortDatePattern + " " + formatInfo.LongTimePattern;
以下是国家的情况:

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


formatInfo.ShortDatePattern+“”+formatInfo.LongTimePattern
formatInfo.GetAllDateTimePatterns('G')[0]
相比,他已经拥有并声称有效了。@JeppeStigNielsen:嗯,这是另一种选择。它可能也更有效,但这不太可能是相关的。我最终坚持了我最初的解决方案。我非常感谢与MSDN和其他替代解决方案的链接。在我自己的搜索中,除了默认的“G”之外,我没有找到任何关于“G”正式定义的内容。我应该在问题中提到这一点(我的错),我将Format属性设置为DateTimePickPerformat.Custom。DateTimePickPerformat.Long只显示日期,但我想同时显示日期和时间。