VBA 日期Date
1 VBA日期基础
2 VBA日期常用函数
方法名 | 作用 |
---|---|
创建日期 | |
DateSerial(year,month,day) | 根据年、月、日创建日期对象 |
Date | 获取当前系统日期 |
Now | 获取当前系统日期与时间 |
获取日期部分 | |
Year(date) | 获取年份 |
Month(date) | 获取月份 |
Day(date) | 获取日(几号) |
Hour(date) | 获取小时 |
Minute(date) | 获取分钟 |
Second(date) | 获取秒 |
日期格式化与解析 | |
Format(date , format) | 将日期对象格式化为字符串 |
DateValue(dateStr) | 将字符串解析为日期 |
TimeValue(timeStr) | 将字符串解析为时间 |
日期加减 | |
DateAdd(interval,n,date) | 将日期date在间隔部分interval上加n |
DateDiff(interval,date1,date2) | 两个日期在间隔部分interval上相差的数值 |
时间相关 | |
Time | 获取当前时间 |
TimeSerial(hour,minute,second) | 利用小时分钟秒构造时间 |
TimeValue | 字符串解析为时间 |
3 示例代码
例1:创建日期。
Sub date1()
Dim d1 As Date
d1 = Date ' 获取当前系统日期
d2 = Now '获取当前系统日期与时间
d3 = DateSerial(2023, 6, 5) '根据年月日构造对象
d4 = #6/5/2023# ' 利用#构造Date常量
Debug.Print d1 '输出 2023/6/5
Debug.Print d2 '输出 2023/6/5 15:01:40
Debug.Print d3 '输出 2023/6/5
Debug.Print d4 '输出 2023/6/5
End Sub
例2:获取日期部分:年,月,日 小时,分钟,秒。
Sub date2()
Dim d1 As Date
d1 = Date
'd1 = Now
Debug.Print Year(d1) '获取年份
Debug.Print Month(d1) '获取月份
Debug.Print Day(d1) '获取几号
Debug.Print Hour(d1) '获取小时数
Debug.Print Minute(d1) '获取分钟
Debug.Print Second(d1) '获取秒
End Sub
例3:日期格式化
Sub date3()
Dim d1, d2 As Date
d1 = Date
Debug.Print Format(d1, "yyyy年mm月dd日")
d2 = Now
Debug.Print Format(d2, "yyyy年mm月dd日 h点nn分ss秒")
End Sub
输出内容:
2023 年06月15日
2023年06月15日 15点07分57秒
例4:字符串解析为日期。
Sub date3_2()
Dim d1 As Date
Dim s1 As String
s1 = "2023年06月15日"
d1 = DateValue(s1)
Debug.Print d1 '输出 2023/6/15
End Sub
例5:日期加减。
Sub date4()
Dim d1 As Date
d1 = Now
Debug.Print d1
Debug.Print DateAdd("d", 6, d1) ' 6天后
Debug.Print DateAdd("m", 6, d1) ' 6个月后
Debug.Print DateAdd("yyyy", 6, d1) ' 6个月后
Debug.Print DateAdd("h", 6, d1) ' 6小时后
Debug.Print DateAdd("n", 6, d1) ' 6分钟后
Debug.Print DateAdd("s", 6, d1) ' 6秒后
Debug.Print DateAdd("d", -2, d1) ' 前天
End Sub
输出内容:
2023/6/15 15:24:22
2023/6/21 15:24:22
2023/12/15 15:24:22
2029/6/15 15:24:22
2023/6/15 21:24:22
2023/6/15 15:30:22
2023/6/15 15:24:28
2023/6/13 15:24:22
例6:'求两个日期的间隔值
Sub date5()
Dim d1, d2 As Date
d1 = DateSerial(2023, 6, 5) '创建日期
d2 = DateSerial(2024, 8, 10)
Debug.Print DateDiff("d", d1, d2) '求相差的天数
Debug.Print DateDiff("m", d1, d2) '求相差的月数
Debug.Print DateDiff("yyyy", d1, d2) '求相差的年数
End Sub
输出结果:
432
14
1
例7:时间相关函数
Sub date6()
Dim t1, t2 As Date
t1 = Time '获取当前时间
Debug.Print t1
t2 = TimeSerial(11, 21, 20) '利用小时分钟秒构造时间
Debug.Print t2
Debug.Print Hour(t1) '获取小时数
Debug.Print Minute(t1) '获取几分
Debug.Print Second(t1) '获取几秒
t3 = TimeValue("11:20:30") '字符串解析为时间
Debug.Print t3
End Sub
输出结果:
15:56:33
11:21:20
15
56
33
11:20:30