You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView默认DateTime格式的来源探究

DataGridView中DateTime默认格式字符串的来源探究

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

DateTime格式

从截图中可见,我的系统上使用的日期格式为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:55:56