DateDiff 함수(Visual Basic)

업데이트: 2007년 11월

두 개의 Date 값 사이에 있는 시간 간격의 개수를 지정하는 Long 값을 반환합니다.

Public Overloads Function DateDiff( _
    ByVal Interval As [ DateInterval | String ], _
    ByVal Date1 As DateTime, _
    ByVal Date2 As DateTime, _
    Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
    Optional ByVal  WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long

매개 변수

  • Interval
    필수 요소. Date1과 Date2 사이의 시간차 단위로 사용할 시간 간격을 나타내는 DateInterval 열거형 값 또는 String 식입니다.

  • Date1
    필수 요소. Date. 계산에 사용할 첫 번째 날짜/시간 값입니다.

  • Date2
    필수 요소. Date. 계산에 사용할 두 번째 날짜/시간 값입니다.

  • DayOfWeek
    선택적 요소. 주의 첫째 요일을 지정하는 FirstDayOfWeek 열거형에서 선택한 값입니다. 값을 지정하지 않으면 FirstDayOfWeek.Sunday가 사용됩니다.

  • WeekOfYear
    선택적 요소. 해당 연도의 첫째 주를 지정하는 FirstWeekOfYear 열거형에서 선택한 값입니다. 값을 지정하지 않으면 FirstWeekOfYear.Jan1이 사용됩니다.

설정

Interval 인수의 설정은 다음과 같습니다.

열거형 값

문자열 값

시간차 단위

DateInterval.Day

"d"

DateInterval.DayOfYear

"y"

DateInterval.Hour

"h"

시간

DateInterval.Minute

"n"

DateInterval.Month

"m"

DateInterval.Quarter

"q"

분기

DateInterval.Second

"s"

DateInterval.Weekday

"w"

DateInterval.WeekOfYear

"ww"

DateInterval.Year

"yyyy"

연도

DayOfWeek 인수의 설정은 다음과 같습니다.

열거형 값

설명

FirstDayOfWeek.System

0

시스템 설정에 지정된 주의 첫째 요일

FirstDayOfWeek.Sunday

1

일요일(기본값)

FirstDayOfWeek.Monday

2

월요일(ISO 표준 8601, 3.17조항을 따름)

FirstDayOfWeek.Tuesday

3

화요일

FirstDayOfWeek.Wednesday

4

수요일

FirstDayOfWeek.Thursday

5

목요일

FirstDayOfWeek.Friday

6

금요일

FirstDayOfWeek.Saturday

7

토요일

WeekOfYear 인수의 설정은 다음과 같습니다.

열거형 값

설명

FirstWeekOfYear.System

0

시스템 설정에 지정된 연도의 첫째 주

FirstWeekOfYear.Jan1

1

1월 1일이 속하는 주(기본값)

FirstWeekOfYear.FirstFourDays

2

주 중 4일 이상이 새로운 연도에 속하는 주(ISO 표준 8601, 3.17 조항을 따름)

FirstWeekOfYear.FirstFullWeek

3

새로운 연도에서 완전한 첫째 주

예외

예외 형식

오류 번호

조건

ArgumentException

5

Interval이 잘못되었습니다.

ArgumentException

5

Date1, Date2 또는 DayofWeek가 범위를 벗어났습니다.

InvalidCastException

13

Date1 또는 Date2가 잘못된 형식입니다.

비구조적 오류 처리를 사용하는 Visual Basic 6.0 응용 프로그램을 업그레이드하는 경우에는 "오류 번호" 열을 참조하십시오. 오류 번호를 Number 속성(Err 개체)과 비교할 수 있습니다. 그러나 가능하면 이러한 오류 제어 방법을 Visual Basic의 구조적 예외 처리 개요에 설명된 방식으로 바꾸는 것이 좋습니다.

설명

DateDiff 함수를 사용하면 두 개의 날짜/시간 값 사이에 있는 지정된 시간 간격의 수를 확인할 수 있습니다. 예를 들어, DateDiff를 사용하여 두 개의 날짜 사이에 있는 일 수나 오늘과 해당 연도의 마지막 날짜 사이에 있는 주 수를 계산할 수 있습니다.

동작

  • **매개 변수 처리.**DateDiff는 Date2 값에서 Date1 값을 빼서 두 값의 차이를 구합니다. 두 값 모두 호출 프로그램에서 변경되지 않습니다.

  • **반환 값.**Date1과 Date2는 Date 데이터 형식이므로 시스템 타이머에서 100나노초 단위의 눈금으로 표시되는 날짜 및 시간 값을 저장합니다. 그러나 DateDiff는 시간 간격의 수를 항상 Long 값으로 반환합니다.

    Date1이 Date2보다 늦은 날짜 및 시간을 나타내는 경우 DateDiff는 음수를 반환합니다.

  • **일 간격.**Interval이 DateInterval.DayOfYear로 설정된 경우 DayOfYear는 시간 간격의 의미가 있는 단위가 아니므로 DateInterval.Day와 동일하게 처리됩니다.

  • **주 간격.**Interval이 DateInterval.WeekOfYear로 설정된 경우 반환 값은 Date1이 속하는 주의 첫째 요일과 Date2가 속하는 주의 첫째 요일 사이에 있는 주 수를 나타냅니다. 다음 예제에서는 DateInterval.Weekday에서 다른 결과가 생성되는 방식을 보여 줍니다.

    ' The following statements set datTim1 to a Thursday
    ' and datTim2 to the following Tuesday.
    Dim datTim1 As Date = #1/4/2001#
    Dim datTim2 As Date = #1/9/2001#
    ' Assume Sunday is specified as first day of the week.
    Dim wD As Long = DateDiff(DateInterval.Weekday, datTim1, datTim2)
    Dim wY As Long = DateDiff(DateInterval.WeekOfYear, datTim1, datTim2)
    

    위 예제에서 DateDiff는 두 날짜 사이의 시간차가 7일보다 작으므로 wD에 0을 반환하지만 각 날짜가 속한 달력상의 주에서 첫째 요일 사이에 7일의 시간차가 있으므로 wY에는 1을 반환합니다.

    주의:

    Date1의 시간 부분이 Date2의 시간 부분보다 크고 Interval이 DateInterval.WeekOfYear로 설정되어 있으면 DateDiff 함수에서는 올바른 값보다 1이 작은 값이 반환됩니다.

  • **더 큰 간격.**Interval이 DateInterval.Year로 설정된 경우 반환 값은 Date1과 Date2의 연도 부분으로만 계산됩니다. 마찬가지로 DateInterval.Month에 대한 반환 값은 인수의 연도 및 월 부분으로만 계산되며, DateInterval.Quarter에 대한 반환 값은 두 날짜가 포함되는 분기로만 계산됩니다.

    예를 들어, 12월 31일과 다음 연도의 1월 1일을 비교할 경우에는 고작 하루가 경과했을 뿐인데도 DateDiff는 DateInterval.Year, DateInterval.Quarter 또는 DateInterval.Month에 대해 1을 반환합니다.

  • 기타 간격.DateTime 구조체는 모든 Date 값을 지원하므로 해당 메서드에는 시간 간격을 구하는 데 사용할 수 있는 추가 옵션이 있습니다. 예를 들어, Subtract 메서드를 오버로드된 두 가지 형식 중 하나로 사용할 수 있습니다. 즉, DateTime.Subtract는 Date 변수에서 TimeSpan을 빼서 다른 Date 값을 반환하고, DateTime.Subtract는 Date 값을 빼서 TimeSpan을 반환합니다. 다음 예제와 같이 프로세스의 시간을 측정하여 해당 프로세스에 소요되는 시간을 밀리초 단위로 구할 수 있습니다.

    Dim startTime As Date = Now
    ' Run the process that is to be timed.
    Dim runLength As Global.System.TimeSpan = Now.Subtract(startTime)
    Dim millisecs As Integer = runLength.Milliseconds
    

예제

다음 예제에서는 DateDiff 함수를 사용하여 오늘과 지정된 날짜 사이의 일 수를 표시합니다.

Dim firstDate, msg As String
Dim secondDate As Date
firstDate = InputBox("Enter a date")
secondDate = CDate(firstDate)
msg = "Days from today: " & DateDiff(DateInterval.Day, Now, secondDate)
MsgBox(msg)

요구 사항

네임스페이스: Microsoft.VisualBasic

**모듈:**DateAndTime

**어셈블리:**Visual Basic 런타임 라이브러리(Microsoft.VisualBasic.dll)

참고 항목

참조

DateAdd 함수(Visual Basic)

DatePart 함수(Visual Basic)

Day 함수(Visual Basic)

Format 함수

Now 속성

Weekday 함수(Visual Basic)

Year 함수(Visual Basic)

Date 데이터 형식(Visual Basic)

DateTime

TimeSpan