【发布时间】: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