網(wǎng)上有很多方法,但其實(shí)都把問(wèn)題復雜化了,就用VBA自帶的datediff函數就可以了。這樣算出來(lái)的時(shí)間對跨日計算、以及起始時(shí)間晚于開(kāi)始時(shí)間的計算等常見(jiàn)問(wèn)題也解決的很好。
示例:
iMinutes
上句可得到從beginTime到endTime之間的分鐘數。其中beginTime和endTime是VBA特有的日期時(shí)間類(lèi)型,這種類(lèi)型保存了很完備的日期時(shí)間信息,可以利用各種函數從中換算出各種日期時(shí)間信息,我把這種類(lèi)型的數據稱(chēng)為“全息時(shí)間”。
另外,題外話(huà)一句,獲得系統當前時(shí)間用now(),這樣也是可以得到一個(gè)全息時(shí)間數據。
返回 Variant (Long) 的值,表示兩個(gè)指定日期間的時(shí)間間隔數目。
語(yǔ)法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函數語(yǔ)法中有下列命名參數:
部分
interval
Date1□date2
Firstdayofweek
firstweekofyear
設置
interval 參數的設定值如下:
設置
yyyy
q
m
y
d
w
ww
h
n
s
firstdayofweek 參數的設定值如下:
常數
vbUseSystem 0
vbSunday
vbMonday
vbTuesday
vbWednesday 4
vbThursday
vbFriday
vbSaturday
常數
vbUseSystem
vbFirstJan1
vbFirstFourDays 2
vbFirstFullWeek 3
說(shuō)明
DateDiff 函數可用來(lái)決定兩個(gè)日期之間所指定的時(shí)間間隔數目。例如,可以使用 DateDiff 來(lái)計算兩個(gè)日期之間相隔幾日,或計算從今天起到年底還有多少個(gè)星期。
為了計算 date1 與 date2 相差的日數,可以使用“一年的日數”(y) 或“日”(d)。當 interval 是“一周的日數”(w) 時(shí),DateDiff 返回兩日期間的周數。如果 date1 是星期一,DateDiff 計算到 date2 為止的星期一的個(gè)數。這個(gè)數包含 date2 但不包含 date1。不過(guò),如果 interval 是“周”(ww),則 DateDiff 函數返回兩日期間的“日歷周”數。由計算 date1 與 date2 之間星期日的個(gè)數而得。如果 date2 剛好是星期日,則 date2 也會(huì )被加進(jìn) DateDiff 的計數結果中;但不論 date1 是否為星期日,都不將它算進(jìn)去。
如果 date1 比 date2 來(lái)得晚,則 DateDiff 函數的返回值為負數。
firstdayofweek 參數會(huì )影響使用時(shí)間間隔符號 “W” 或 “WW” 計算的結果。
如果 date1 或 date2 是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1 或 date2 用雙引號 (" ") 括起來(lái),且年份略而不提,則在每次計算表達式 date1 或 date2 時(shí),當前年份都會(huì )插入到代碼之中。這樣就可以書(shū)寫(xiě)適用于不同年份的程序代碼。
在計算 12 月 31 日和來(lái)年的 1 月 1 日的年份差時(shí),DateDiff 返回 1 表示相差一個(gè)年份,雖然實(shí)際上只相差一天而已。
DateDiff 函數示例
本示例使用 DateDiff 函數來(lái)顯示某個(gè)日期與今日相差幾天。
Dim TheDate As Date
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg
聯(lián)系客服