【问题标题】:Wrong formatting in Winform DataGridView for DateTime typeDateTime 类型的 Winform DataGridView 格式错误
【发布时间】:2018-07-25 10:33:57
【问题描述】:

我在一个项目中使用dot net 3.5,需要在DataGridView中绑定一个DateTime类型的值。

我的文化设置为 SV-瑞典语,我将 ShortTime 格式设置为 - 'kl 'H:mm 和 LongTime 格式设置为 - 'kl 'H:mm:ss

根据微软https://msdn.microsoft.com/en-us/library/k494fzbf(v=vs.90).aspx

DateTime.ToString(),结合了返回的自定义格式字符串 的 ShortDatePattern 和 LongTimePattern 属性 DateTimeFormatInfo 对象返回的 Thread.CurrentThread.CurrentCulture.DateTimeFormat 属性

当检查代码或中间窗口时,它的工作方式与它所说的一样(“2018-07-25 kl 15:45:49”)。 但是,当我将相同的 DateTime 值绑定到 DataGridView 列时,它会以 2018-07-26 15:55 的格式显示值。 下面附上截图。

我的代码很简单 -

        List<Data> dataSource = new List<Data>();

        for (int i = 1; i < 20; i++)
        {
            dataSource.Add(new Data() { Id = i, DateOfJoining = DateTime.Now.AddDays(i), Department =  "Department " + i, Name =  "Name " + 1});
        }
        dataGridView1.AutoGenerateColumns = true;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        dataGridView1.DataSource = dataSource;

Data 类是 -

public class Data
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public DateTime DateOfJoining { get; set; }
}

我在 4.6.1 中测试了相同的场景,根据系统文化设置中的设置,这可以正常工作。

谁能解释 Dot net 3.5 中的这种奇怪行为?

谢谢。

【问题讨论】:

    标签: c# .net winforms datagridview datetime-format


    【解决方案1】:

    也许如果你设置

    dataGridView1.Columns[3].DefaultCellStyle.Format = "yyy-MM-dd kl H:mm:ss";
    

    或者也许扩展您的 Data 类,以便它也以所需的格式保存日期。

    【讨论】:

    • 这可能是一种解决方法。但问题是,这种格式在整个应用程序中都适用,并且在任何地方设置都不可行。
    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多