提取功能
这些函数采用一个 Variant
,可以作为参数强制转换为 Date
,并返回表示日期或时间的一部分的 Integer
。如果参数无法转换为 Date
,则会导致运行时错误 13:类型不匹配。
功能 | 描述 | 退货价值 |
---|---|---|
年() | 返回 date 参数的 year 部分。 | 整数(100 到 9999) |
月() | 返回 date 参数的 month 部分。 | 整数(1 到 12) |
天() | 返回 date 参数的 day 部分。 | 整数(1 到 31) |
工作日() | 返回 date 参数的星期几。接受一个可选的第二个参数,定义一周的第一天 | 整数(1 到 7) |
小时() | 返回 date 参数的小时部分。 | 整数(0 到 23) |
分钟() | 返回 date 参数的分钟部分。 | 整数(0 到 59) |
第二() | 返回 date 参数的第二部分。 | 整数(0 到 59) |
例子:
Sub ExtractionExamples()
Dim MyDate As Date
MyDate = DateSerial(2016, 7, 28) + TimeSerial(12, 34, 56)
Debug.Print Format$(MyDate, "yyyy-mm-dd hh:nn:ss") ' prints 2016-07-28 12:34:56
Debug.Print Year(MyDate) ' prints 2016
Debug.Print Month(MyDate) ' prints 7
Debug.Print Day(MyDate) ' prints 28
Debug.Print Hour(MyDate) ' prints 12
Debug.Print Minute(MyDate) ' prints 34
Debug.Print Second(MyDate) ' prints 56
Debug.Print Weekday(MyDate) ' prints 5
'Varies by locale - i.e. will print 4 in the EU and 5 in the US
Debug.Print Weekday(MyDate, vbUseSystemDayOfWeek)
Debug.Print Weekday(MyDate, vbMonday) ' prints 4
Debug.Print Weekday(MyDate, vbSunday) ' prints 5
End Sub
DatePart()
函数
DatePart()
也是一个返回日期的一部分的函数,但工作方式不同,并且允许比上述函数更多的可能性。例如,它可以返回一年中的季度或一年中的一周。
句法:
DatePart ( interval, date [, firstdayofweek] [, firstweekofyear] )
interval 参数可以是:
间隔 | 描述 |
---|---|
YYYY |
年(100 至 9999) |
Y |
一年中的某一天(1 至 366) |
m 个 |
月(1 至 12) |
Q |
季度(1 至 4) |
WW |
周(1 至 53) |
W |
星期几(1 到 7) |
d |
每月的某一天(1 到 31) |
H |
小时(0 到 23) |
N |
分钟(0 到 59) |
S |
秒(0 到 59) |
firstdayofweek 是可选的。它是一个常量,指定一周的第一天。如果未指定,则假定为 vbSunday
。
firstweekofyear 是可选的。它是一个常量,指定一年中的第一周。如果未指定,则假定第一周是 1 月 1 日发生的那一周。
例子:
Sub DatePartExample()
Dim MyDate As Date
MyDate = DateSerial(2016, 7, 28) + TimeSerial(12, 34, 56)
Debug.Print Format$(MyDate, "yyyy-mm-dd hh:nn:ss") ' prints 2016-07-28 12:34:56
Debug.Print DatePart("yyyy", MyDate) ' prints 2016
Debug.Print DatePart("y", MyDate) ' prints 210
Debug.Print DatePart("h", MyDate) ' prints 12
Debug.Print DatePart("Q", MyDate) ' prints 3
Debug.Print DatePart("w", MyDate) ' prints 5
Debug.Print DatePart("ww", MyDate) ' prints 31
End Sub