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