DataGridView默认DateTime格式的来源探究
DataGridView中DateTime默认格式字符串的来源探究
我正在尝试确定DataGridView将DateTime转换为String时所使用的默认格式字符串来源。

从截图中可见,我的系统上使用的日期格式为yyyy-MM-dd h:mm tt,未显示秒数。但查看各类CultureInfo对象后,未找到与之完全匹配的单一日期格式。
对于给定的DateTime,可通过以下代码生成匹配的输出字符串:
DateTime d = DateTime.Now; var ci = CultureInfo.CurrentCulture; var df = ci.DateTimeFormat; String s = d.ToString(df.ShortDatePattern) + " " + d.ToString(df.ShortTimePattern);
但我怀疑实际并非如此实现,使用单一格式而非两个格式拼接会更合理。或者实际就是这样拼接的?
public static void TestDgv() { DateTime now = DateTime.Now; DataGridView dgv = new DataGridView { Dock = DockStyle.Fill, AllowUserToAddRows = false, AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells }; DataTable table = new DataTable(); table.Columns.Add("DateTimeColumn", typeof(DateTime)); table.Rows.Add(new Object[] { now }); dgv.DataSource = table; Form f = new Form(); f.Controls.Add(dgv); // 显示格式为yyyy-MM-dd h:mm tt Application.Run(f); // 示例:2024-10-30 4:29 PM StringBuilder sb = new StringBuilder(); System.Globalization.CultureInfo c1 = System.Globalization.CultureInfo.CurrentCulture; System.Globalization.CultureInfo c2 = System.Globalization.CultureInfo.CurrentUICulture; System.Globalization.CultureInfo c3 = System.Globalization.CultureInfo.InvariantCulture; foreach (var ci in new [] { c1, c2, c3 }) { sb.AppendLine(); sb.AppendLine(ci == c1 ? "CurrentCulture" : ci == c2 ? "CurrentUICulture" : "InvariantCulture"); DateTimeFormatInfo d = ci.DateTimeFormat; String s1 = d.FullDateTimePattern; String s2 = d.LongDatePattern; String s3 = d.LongTimePattern; String s4 = d.MonthDayPattern; String s5 = d.ShortDatePattern; String s6 = d.ShortTimePattern; String s7 = d.SortableDateTimePattern; String s8 = d.UniversalSortableDateTimePattern; String s9 = d.YearMonthPattern; foreach (String ss in new [] { s1, s2, s3, s4, s5, s6, s7, s8, s9 }) { sb.AppendLine(now.ToString(ss) + "\t" + ss); } } } /* CurrentCulture Wednesday, October 30, 2024 4:29:46 PM dddd, MMMM dd, yyyy h:mm:ss tt Wednesday, October 30, 2024 dddd, MMMM dd, yyyy 4:29:46 PM h:mm:ss tt 30 October d MMMM 2024-10-30 yyyy-MM-dd 4:29 PM h:mm tt 2024-10-30T16:29:46 yyyy'-'MM'-'dd'T'HH':'mm':'ss 2024-10-30 16:29:46Z yyyy'-'MM'-'dd HH':'mm':'ss'Z' October, 2024 MMMM, yyyy CurrentUICulture Wednesday, October 30, 2024 4:29:46 PM dddd, MMMM d, yyyy h:mm:ss tt Wednesday, October 30, 2024 dddd, MMMM d, yyyy 4:29:46 PM h:mm:ss tt October 30 MMMM d 10-30-2024 M/d/yyyy 4:29 PM h:mm tt 2024-10-30T16:29:46 yyyy'-'MM'-'dd'T'HH':'mm':'ss 2024-10-30 16:29:46Z yyyy'-'MM'-'dd HH':'mm':'ss'Z' October 2024 MMMM yyyy InvariantCulture Wednesday, 30 October 2024 16:29:46 dddd, dd MMMM yyyy HH:mm:ss Wednesday, 30 October 2024 dddd, dd MMMM yyyy 16:29:46 HH:mm:ss October 30 MMMM dd 10-30-2024 MM/dd/yyyy 16:29 HH:mm 2024-10-30T16:29:46 yyyy'-'MM'-'dd'T'HH':'mm':'ss 2024-10-30 16:29:46Z yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2024 October yyyy MMMM */
内容的提问来源于stack exchange,提问作者Loathing
相关产品推荐
相关产品推荐

