通过增加时间跨度将时间分配给列表中的DateTime变量
本文关键字:列表 DateTime 变量 分配 增加 时间跨度 时间 | 更新日期: 2023-09-27 18:16:01
我正在为日期时间值列表分配时间。我的需要是,在为每个日期时间值分配时,将时间段增加特定的小时。
TimeSpan ts = DateTime.Now.TimeOfDay;
List<DateTime> lstdt = dates.Where(d => d.Date == tpl.Item1).Select(d => d.Date + ts);
您可以创建一个方法,将TimeSpan
乘以int
,然后在Select
中使用该方法,如
public static DateTime AddTimeSpan(DateTime baseDateTime, TimeSpan ts, int multiplier)
{
var ticks = ts.Ticks;
var duration = TimeSpan.FromTicks(ticks * multiplier);
return baseDateTime.Add(duration);
}
//and use in select
TimeSpan ts = new TimeSpan(2, 00, 0);
List<DateTime> lstdt = dates.Select((d, idx) => AddTimeSpan(d, ts, idx + 1)).ToList();
示例
var datetime = new DateTime(2015, 10, 4, 9, 30, 00); //04/10/2015 09:30:00
List<DateTime> dates = new List<DateTime> { datetime, datetime, datetime };
TimeSpan ts = new TimeSpan(2, 00, 0);
List<DateTime> lstdt = dates.Select((d, idx) => AddTimeSpan(d, ts, idx + 1)).ToList();
//=> produces { 04/10/2015 11:30:00, 04/10/2015 13:30:00, 04/10/2015 15:30:00 }
List<DateTime> lstdt = dates.Where(d => d.Date == tpl.Item1)
.Select(d => d.Date.AddHours(ts.Hours));
或者,如果您需要添加整个时间,而不仅仅是小时:
List<DateTime> lstdt = dates.Where(d => d.Date == tpl.Item1)
.Select(d => d.Date.AddTicks(ts.Ticks));