提取功能

这些函数采用一个 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