如何獲得給定的兩個日期之間的所有日期,給定「日期名稱」?
例如:START_DATE = 2011年1月1日
END_DATE = 2011年1月20日
天名稱 = 週日
如何獲得所有在c日期的2日期之間給出的「日期名稱」日期
在這裏,我們需要DAYNAME把所有日期爲 「SUNDAY」
例如:
Jan 02, 2011
Jan 09, 2011
Jan 16, 2011
如何獲得給定的兩個日期之間的所有日期,給定「日期名稱」?
例如:START_DATE = 2011年1月1日
END_DATE = 2011年1月20日
天名稱 = 週日
如何獲得所有在c日期的2日期之間給出的「日期名稱」日期
在這裏,我們需要DAYNAME把所有日期爲 「SUNDAY」
例如:
Jan 02, 2011
Jan 09, 2011
Jan 16, 2011
DateTime startDate = new DateTime(2011, 1, 1);
DateTime endDate = new DateTime(2011, 1, 20);
while (startDate < endDate)
{
if (startDate.DayOfWeek == DayOfWeek.Sunday)
{
// Do something
}
startDate = startDate.AddDays(1);
}
如何像
DateTime startDate = new DateTime(2011, 01, 01);
DateTime endDate = new DateTime(2011, 01, 20);
string dayName = "sunday";
List<DateTime> list = new List<DateTime>();
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1))
{
if (runDate.DayOfWeek.ToString().ToLower() == dayName)
list.Add(runDate);
}
甚至使用Enum.TryParse
DateTime startDate = new DateTime(2011, 01, 01);
DateTime endDate = new DateTime(2011, 01, 20);
string dayName = "sunday";
DayOfWeek dow;
Enum.TryParse(dayName, true, out dow);
List<DateTime> list = new List<DateTime>();
for (DateTime runDate = startDate; runDate <= endDate; runDate = runDate.AddDays(1))
{
if (runDate.DayOfWeek == dow)
list.Add(runDate);
}
Worked perfect for me..thx :) – DharaPPatel
無需測試:
DateTime start = x;
DateTime end = y;
while (start.DayOfWeek != z)
start = start.AddDays(1);
while (start <= end)
{
//DoStuff
start = start.AddDays(7);
}
我喜歡用Enumerable.Range
的任務,這樣的:
DateTime start = new DateTime(2011,1,1);
DateTime end = new DateTime(2011,1,20);
var datesThatAreSundays = Enumerable
.Range(start.DayOfYear, end.Subtract(start).Days + 1)
.Select(n => start.AddDays(n - start.DayOfYear))
.Where(d => d.DayOfWeek == DayOfWeek.Sunday);
+1我一直在尋找這樣的答案。 – Steve
完美,但它不包括開始日期如何包含? – DharaPPatel
@DharaPPatel碰巧代碼不正確。它現在已經修復,可以在任何日期正確工作,並且在結果中包含給定的開始日期和結束日期。感謝您指出。 –
你可以試試這個
var firstDate = new DateTime(2011, 1, 1);
var lastDate = new DateTime(2011, 1, 20);
var result = (from el in Enumerable.Range(0, (lastDate - firstDate).Days)
let date = firstDate.AddDays(el)
where date.DayOfWeek == DayOfWeek.Sunday
select date).ToArray();
最有可能你會發現在喬恩斯基特的函數[野田時間](http://code.google.com/p/noda-time/)。 –