提取功能

這些函式採用一個 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