Excel-VBA 快速上手(十三、日期的常见用法)


文章目录

  • 1. 获取系统时间
  • 2. 更细力度的提取时间
  • 3. 格式化显示日期
  • 3. 日期差计算
  • 4. 日期加减
  • 5. 时间序列化

1. 获取系统时间


常见的三个获取系统时间的方式:

  1. Date 获取当前系统时间的年月日
  2. Time 获取当前系统时间的时分秒
  3. Now 获取当前系统时间的年月日和时分秒
Public Sub main()
  Debug.Print Date '结果:2022/7/27
  Debug.Print Time '结果:15:00:25
  Debug.Print Now '结果:2022/7/27 15:00:25
End Sub

2. 更细力度的提取时间


  1. 从日期中提取年 Year(时间)
  2. 从日期中提取月 Month(时间)
  3. 从日期中提取日 Day(时间)
  4. 从日期中提取时 Hour(时间)
  5. 从日期中提取分 VBA.Minute(时间)
  6. 从日期中提取秒 Second(时间)

Public Sub main()
  Debug.Print Year(Now) '结果:2022
  Debug.Print Month(Now) '结果:7
  Debug.Print Day(Now) '结果:27
  Debug.Print Hour(Now) '结果:15
  Debug.Print VBA.Minute(Now) '结果:4
  Debug.Print Second(Now) '结果:20
End Sub

3. 格式化显示日期


格式化日期显示的语法为:Format(时间, 格式),常见格式有:

格式 描述
yyyy-mm-dd 年月日
yyyy年mm月dd日 中文年月日
yyyy年mm月dd日 h:mm:ss 中文年月日时分秒
d-mmm-yy 英文月份简写
d-mmmm-yy 英文月份
aaaa 中文星期
ddd 英文星期简写
dddd 英文星期

示例:

Public Sub main()
  Debug.Print Format(Now, "yyyy-mm-dd") '结果:2022-07-27
  Debug.Print Format(Now, "yyyy年mm月dd日") '结果:2022年07月27日
  Debug.Print Format(Now, "yyyy年mm月dd日 h:mm:ss") '结果:2022年07月27日 15:13:31
  Debug.Print Format(Now, "d-mmm-yy") '结果:27-Jul-22
  Debug.Print Format(Now, "d-mmmm-yy") '结果:27-July-22
  Debug.Print Format(Now, "aaaa") '结果:星期三
  Debug.Print Format(Now, "ddd") '结果:Wed
  Debug.Print Format(Now, "dddd") '结果:Wednesday
End Sub

3. 日期差计算


日期差计算语法为:DateDiff(时间单位, 时间, 比较的时间)

Public Sub main()
  Debug.Print DateDiff("d", "2022-07-27", "2022-07-28") '相差几天 结果:1
  Debug.Print DateDiff("m", "2022-07-28", "2022-08-28") '相差几月 结果:1
  Debug.Print DateDiff("yyyy", "2022-07-28", "2023-07-28") '相差几年 结果:1
  Debug.Print DateDiff("q", "2022-07-28", "2022-10-01") '相差几个季度 结果:1
  Debug.Print DateDiff("w", "2022-07-28", "2022-08-04") '相差几个七天 结果:1
  Debug.Print DateDiff("h", "2022-07-28 15:00", "2022-07-28 16:00") '相差几小时 结果:1
  Debug.Print DateDiff("n", "2022-07-28 15:01", "2022-07-28 15:02") '相差几分钟 结果:1
  Debug.Print DateDiff("s", "2022-07-28 15:01:00", "2022-07-28 15:01:01") '相差几秒钟 结果:1
End Sub

4. 日期加减


日期加减语法为:DateAdd(单位, 加减的时间, 时间),加减的时间为正数就是加,为负数就是减:

Public Sub main()
  Debug.Print VBA.DateAdd("d", 10, "2022/07/27 16:00:00") '加十天 结果:2022/8/6 16:00:00
  Debug.Print VBA.DateAdd("m", 10, "2022/07/27 16:00:00") '加十个月 结果:2023/5/27 16:00:00
  Debug.Print VBA.DateAdd("yyyy", 10, "2022/07/27 16:00:00")  '加十年 结果:2032/7/27 16:00:00
  Debug.Print VBA.DateAdd("yyyy", -10, "2022/07/27 16:00:00") '减十天 结果:2012/7/27 16:00:00
  Debug.Print VBA.DateAdd("h", 10, "2022/07/27 16:00:00") '加十小时 结果:2022/7/28 2:00:00
  Debug.Print VBA.DateAdd("n", 10, "2022/07/27 16:00:00") '加十分钟 结果:2022/7/27 16:10:00
  Debug.Print VBA.DateAdd("s", 10, "2022/07/27 16:00:00") '加十秒钟 结果:2022/7/27 16:00:10
End Sub

5. 时间序列化

Public Sub main()
  Debug.Print VBA.DateSerial(2022, 7, 27) '结果:2022/7/27
  Debug.Print VBA.TimeSerial(16, 1, 2) '结果:16:01:02
End Sub

你可能感兴趣的:(VBA-Excel,vba)