Winform DataGridView中DateTime类型的格式错误

时间:2018-07-25 10:33:57

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

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

我的文化设置为SV-瑞典语,并且我已将ShortTime格式设置为-'kl'H:mm ,将LongTime格式设置为-'kl'H:mm:ss < / strong>

根据Microsoft 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;

,数据类为-

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中测试了相同的方案,根据系统区域性设置中的设置,此方法可以正常工作。

有人能解释点网3.5中的这种奇怪行为吗?

谢谢。enter image description here

1 个答案:

答案 0 :(得分:0)

也许您设置了

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

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