日期处理汇总
定义一个日期
v_date = Date ' 今天,格式为:yyyy-MM-dd
v_time = Now ' 此时,格式为:yyyy-MM-dd HH:mm:ss
v_date2 = #"2021-06-01" '指定时间
v_date3 = CDate("2021-06-01")
日期格式化
' 2022-01-28
Format(Date, "yyyy-MM-dd")
' 获取当天的年周数,格式为长格式,例如第一周显示为01
v_week_num = WorksheetFunction.WeekNum(Date, vbMonday)
Format(v_week_num, "00")
日期处理
对日期进行处理,得到想要的目标日期
' 今天
today = Date
' 昨天
yesterday = today - 1
' 本周一 注:在Excel中,周日是一周的第一天
monday = today - Weekday(today) + 2
' 本月第一天
monthFirstDay = lastMonday - Day(lastMonday) + 1
' 本月最后一天
targetDate = DateSerial(Year(targetDate), Month(targetDate) + 1, 0)
' 今天是一年的第几周,以周一作为本周的第一天
weekNum = WorksheetFunction.weekNum(today, vbMonday)
日期比较
日期是可以直接比较和相减的,相减的间隔为时间的间隔。
' 今天
today = Date
' 昨天
yesterday = today - 1
' 日期之间也可以比较和加减
today > yesterday ' True
today - yesterday ' 1 ,相隔1一天
计算时间间隔
DateDiff
函数可以用于计算时间的间隔。
Sub tt1()
Dim d1, d2 As Date
d1 = #11/21/2021#
d2 = #12/1/2022#
MsgBox("相隔" & (d2 - d1) & "天")
MsgBox("相隔" & DateDiff("d", d1, d2) & "天")
MsgBox("相隔" & DateDiff("m", d1, d2) & "月")
MsgBox("相隔" & DateDiff("yyyy", d1, d2) & "年")
MsgBox("相隔" & DateDiff("q", d1, d2) & "季")
MsgBox("相隔" & DateDiff("w", d1, d2) & "周")
MsgBox("相隔" & DateDiff("h", d1, d2) & "小时")
MsgBox("相隔" & DateDiff("n", d1, d2) & "分种")
MsgBox("相隔" & DateDiff("s", d1, d2) & "秒")
End Sub
计算耗时
startTime = Time
' 业务数据处理
MsgBox ("运行此流程共耗时:" & DateDiff("s", startTime, Time) & "秒")
' 后台打印使用的时间
Debug.Print DateDiff("s", startTime, Time) & "秒"