DateInterval 的妙用

01:28 0 Comments A+ a-

列舉某日期區間中的所有日期

這篇是程式筆記啦。
之前遇到這樣的需求時,是用比較笨的方法。而今天靈機一動,DateInterval 這個日期列舉清單其實是非常有用的

首先,使用 DayOfYear,取得指定日期是該年的第幾天,然後依下列程式碼敍述,一樣可以列舉區間中所有日期。但是,請注意,採這個方法,會有一問題,如果遇到的區間是有跨年度的,那就很搞笑了。但是還是有解,只是有一點點不太方便而已。
Dim strFinalOutput As String = String.Empty
Dim dtBegin As String = "2008/2/1"
Dim dtStop As String = "2008/7/3"

Dim iStart As Integer = CDate(dtBegin).DayOfYear
Dim iEnd As Integer = CDate(dtStop).DayOfYear

For iLooper As Integer = 0 To iEnd - iStart
   Dim oRunDate As String = Format(DateAdd(DateInterval.Day, iLooper, CDate(dtBegin)), "yyyy/MM/dd")
   strFinalOutput = oRunDate & vbCrLf
   Console.Write(strFinalOutput)
Next iLooper




接著,使用 DateInterval.Day,以日為單位步進。並利用 DateDiff 來計算區間日差。耶,就是這個了,它是無視跨年度的,如下列程式碼敍述。若改變 DateInterval 的單位,則可以更換步進的單位值。整個的處理比上段的程式碼順多了。
Dim strFinalOutput As String = String.Empty
Dim dtBegin As String = "2008/2/1"
Dim dtStop As String = "2008/7/3"

Dim iDiff As Integer = DateDiff(DateInterval.Day, CDate(dtBegin), CDate(dtStop))

For iLooper As Integer = 0 To iDiff
   Dim oRunDate As String = Format(DateAdd(DateInterval.Day, iLooper, CDate(dtBegin)), "yyyy/MM/dd")
   strFinalOutput = oRunDate & vbCrLf
   Console.Write(strFinalOutput)
Next iLooper


以上。