這也是在網路上所看到的一個問題,
“如果我想要抓一段日期,並秀出在此日期區間每個星期二的日期
2011/09/14~2011/10/14 每個星期二 請問要如何抓出”
所然說提問者是用VB語法,但是用C#來寫也是一樣的,主要是邏輯的部份是相同的。
其實這題並不是很難,主要在於會不會對DateTime做操作,
程式部分:
DateTime startDate = new DateTime(2011, 9, 14);
DateTime endDate = new DateTime(2011, 10, 14);
DateTime currentDate = new DateTime();
List<DateTime> matchDates = new List<DateTime>();
for(int i = 0; i<=(endDate.Subtract(startDate).Days); i++){currentDate = startDate.AddDays(i);if(currentDate.DayOfWeek == DayOfWeek.Tuesday)
{matchDates.Add(currentDate);}}
主要是該如何下for迴圈練面的條件,以及使用DateTime.DayOfWeek屬性去判斷。
2011-09-21 補充 另一種寫法,
這樣的寫法在效能上是比較好,因為不會一個日期一個日期的去判斷,
只要找到一個符合DayOfWeek的日期後,就該日期加上七天,然後一直循環到結束日期為止。
List<DateTime> matchDates = new List<DateTime>();
DateTime startDate = new DateTime(2011, 9, 14);
DateTime endDate = new DateTime(2011, 10, 14);
DateTime currentDate = startDate;while(currentDate <= endDate)
{if(currentDate.DayOfWeek == DayOfWeek.Tuesday)
{matchDates.Add(currentDate);currentDate = currentDate.AddDays(7);}else
{currentDate = currentDate.AddDays(1);}};
補充:VB.NET寫法
Dim startDate As New DateTime(2011, 9, 14)Dim endDate As New DateTime(2011, 10, 14)Dim currentDate As New DateTime()Dim matchDates As New List(Of DateTime)()For i As Integer = 0 To (endDate.Subtract(startDate).Days)currentDate = startDate.AddDays(i)If currentDate.DayOfWeek = DayOfWeek.Tuesday ThenmatchDates.Add(currentDate)End IfNext
VB.NET程式執行無誤~
以上
謝謝您的範例。
回覆刪除謝謝你的回應.
刪除