通过增加时间跨度将时间分配给列表中的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);

通过增加时间跨度将时间分配给列表中的DateTime变量

您可以创建一个方法,将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));