2015-10-04 42 views
-1

我正在給日期時間值列表分配時間。我需要爲每個日期時間值分配一段時間的時間。通過增加時間範圍在列表中分配時間到日期時間變量

TimeSpan ts = DateTime.Now.TimeOfDay;  
List<DateTime> lstdt = dates.Where(d => d.Date == tpl.Item1).Select(d => d.Date + ts); 
+0

你的意思是假設你的收藏中有符合這些標準的'n'日期,所以你想在每件物品上增加一些時間?你能舉一些例子嗎? –

+1

那麼你發佈的代碼有什麼問題?它拋出異常嗎?它會返回意外的值嗎?你可以發佈一些樣本輸入,當前的輸出可能是錯誤的和預期的輸出? –

+0

@RahulSingh:你說得對。 可以說lstdt具有以下 2015年4月10日00:00:00 2015年4月10日00:00:00 現在我需要的是 2015年4月10日09:00:00 04-10 -2015 11:00:00 – IamP

回答

1

您可以創建添加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 } 
0
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));