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