VBA 日期Date

1 VBA日期基础

查看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