【发布时间】:2014-06-24 08:41:39
【问题描述】:
我有一个带有日期的列表,可以在网格中显示它,我想在 range2 中增加一小时:
private void grid_loaded(object sender, RoutedEventArgs e)
{
var data = new List<EntityViewModel>
{
new EntityViewModel { aDay = new DateTime(1980, 1, 1, 12, 0, 12) },
new EntityViewModel { aDay = new DateTime(1983, 1, 1, 12, 23, 12) },
new EntityViewModel { aDay = new DateTime(1985, 6, 14, 12, 0, 12) },
new EntityViewModel { aDay = new DateTime(1990, 7, 3, 12, 23, 12) },
new EntityViewModel { aDay = new DateTime(1995, 8, 1, 4, 23, 12) },
new EntityViewModel { aDay = new DateTime(1996, 1, 1, 12, 0, 12) },
new EntityViewModel { aDay = new DateTime(2000, 1, 1, 12, 0, 12) },
new EntityViewModel { aDay = DateTime.Now }
};
var range = data.Where(i => i.aDay.Year >= 1983 && i.aDay.Year <= 1996).ToList();
var range2 = range.Where(i => i.aDay.Date.IsDaylightSavingTime() == true).ToList();
}
我试过了:
var range3 = range.Where(i => i.aDay.Date.IsDaylightSavingTime() == true).ToList();
range3.ForEach(i => i.aDay.AddHours(1));
这个:
foreach (var item in range2.Where(x => x.aDay != null))
{
item.aDay.AddHours(1);
}
还有这个:
var range5 = range2.Where(i => i.aDay != null).Select(i => { i.aDay.AddHours(1); return i; }).ToList();
但它什么也没做,总是相同的时间。
【问题讨论】:
-
鉴于您的代码,我会说为夏令时增加一小时是错误的做法,请查看
ToUniversalTime(),看看它是否符合您的要求。如果没有,请同时查看DateTimeOffset,正常的DateTime不是用来处理偏移的。IsDaylightSavingTime()的作用:指示此 DateTime 实例是否在当前时区的夏令时范围内。 IE,即使你添加一个小时,它仍然会声明它是夏令时。
标签: c# linq list datetime entity