Language

DateAndTime.DateDiff メソッド

定義

2 つの Date 値間の時間間隔の数を指定する値を返します。

オーバーロード

名前 説明
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

Date1からDate2を減算して、2 つのDate値間の時間間隔の数を指定する長い値を指定します。

DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)

Date1からDate2を減算して、2 つのDate値間の時間間隔の数を指定する長い値を指定します。

DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)

ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb

Date1からDate2を減算して、2 つのDate値間の時間間隔の数を指定する長い値を指定します。

public static long DateDiff(Microsoft.VisualBasic.DateInterval Interval, DateTime Date1, DateTime Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
static member DateDiff : Microsoft.VisualBasic.DateInterval * DateTime * DateTime * Microsoft.VisualBasic.FirstDayOfWeek * Microsoft.VisualBasic.FirstWeekOfYear -> int64
Public Function DateDiff (Interval As DateInterval, Date1 As DateTime, Date2 As DateTime, Optional DayOfWeek As FirstDayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Optional WeekOfYear As FirstWeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1) As Long

パラメーター

Interval
DateInterval

必須。 DateIntervalとDate1の差の単位として使用する時間間隔を表すDate2列挙値または文字列式。

Date1
DateTime

必須。 計算に使用する最初の日付/時刻値。

Date2
DateTime

必須。 計算に使用する 2 番目の日付/時刻値。

DayOfWeek
FirstDayOfWeek

このフィールドは省略可能です。 週の最初の曜日を指定する FirstDayOfWeek 列挙体から選択された値。 指定しない場合は、Sunday が使用されます。

WeekOfYear
FirstWeekOfYear

このフィールドは省略可能です。 年の最初の週を指定する FirstWeekOfYear 列挙体から選択された値。 指定しない場合は、Jan1 が使用されます。

返品

2 つの Date 値間の時間間隔の数を指定する long 値。

例外

Date1、 Date2、または DayofWeek が範囲外です。

Date1 または Date2 が無効な型です。

例

この例では、 DateDiff 関数を使用して、特定の日付から今日までの日数を表示します。

Dim date2Entered As String = InputBox("Enter a date")

Try
    Dim date2 As Date = Date.Parse(date2Entered)
    Dim date1 As Date = Now

    ' Determine the number of days between the two dates.
    Dim days As Long = DateDiff(DateInterval.Day, date1, date2)

    ' This statement has a string interval argument, and
    ' is equivalent to the above statement.
    'Dim days As Long = DateDiff("d", date1, date2)

    MessageBox.Show("Days from today: " & days.ToString)
Catch ex As Exception
    MessageBox.Show("Invalid Date: " & ex.Message)
End Try

注釈

DateDiff関数を使用すると、2 つの日付/時刻値の間に指定された時間間隔の数を確認できます。 たとえば、 DateDiff を使用して、2 つの日付の間の日数、または今日から年末までの週数を計算できます。

Behavior

  • パラメーターの処理。 DateDiffは、差を生成するためにDate1の値からDate2の値を減算します。 呼び出し元プログラムでは、どちらの値も変更されません。

  • 戻り値。 Date1とDate2はDateデータ型であるため、システム タイマーでは 100 ナノ秒のティックに正確な日付と時刻の値が保持されます。 ただし、 DateDiff は常に時間間隔の数を Long 値として返します。

    Date1 Date2よりも後の日付と時刻を表す場合、DateDiffは負の値を返します。

  • 日の間隔。 IntervalがDateInterval.DayOfYearに設定されている場合、DateInterval.Dayは時間間隔の意味のある単位ではないため、DayOfYearと同じように扱われます。

  • 週の間隔。 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)
    

    前の例では、2 つの日付の差が 7 日未満であるため、 DateDiff は 0 から wD を返しますが、それぞれのカレンダー週の最初の日には 7 日間の差があるため、1 から wY を返します。

  • 間隔が大きい。 IntervalがDateInterval.Yearに設定されている場合、戻り値はDate1とDate2の年部分から純粋に計算されます。 同様に、 DateInterval.Month の戻り値は、引数の年と月の部分から、および 2 つの日付を含む四半期の DateInterval.Quarter から純粋に計算されます。

    たとえば、12 月 31 日から翌年の 1 月 1 日を比較すると、 DateDiff は、最大で 1 日しか経過していなくても、 DateInterval.Year、 DateInterval.Quarter、または DateInterval.Monthに対して 1 を返します。

    複数の時代 (年号) を持つ日本語などのカルチャの場合、 DateDiff メソッドは、その差が 2 つ以上の時代 (年号) にまたがる場合、年の差を返しません。 代わりに、次の例に示すように、 Year プロパティによって返される値の差を計算 date2.Year - date1.Year。

  • その他の間隔。 すべての Date 値は DateTime 構造体でサポートされているため、そのメソッドを使用すると、時間間隔を検索するための追加のオプションが提供されます。 たとえば、Subtract メソッドは、オーバーロードされた形式のいずれかで使用できます。DateTime.SubtractTimeSpan変数からDateを減算して別のDate値を返し、DateTime.SubtractDate値を減算して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 Double = runLength.TotalMilliseconds
    

Interval引数には、次のいずれかの設定を指定できます。

列挙値 文字列値 時間差の単位
DateInterval.Day "d" 日
DateInterval.DayOfYear "y" 日
DateInterval.Hour "h" 時
DateInterval.Minute "n" 分
DateInterval.Month "m" 月
DateInterval.Quarter "q" 四半期グラフ
DateInterval.Second エス 秒
DateInterval.Weekday "w" 週
DateInterval.WeekOfYear "ww" カレンダーの週
DateInterval.Year "yyyy" 年

DayOfWeek引数には、次のいずれかの設定を指定できます。

列挙値 価値 Description
FirstDayOfWeek.System 0 システム設定で指定された週の最初の曜日
FirstDayOfWeek.Sunday 1 日曜日 (既定)
FirstDayOfWeek.Monday 2 月曜日 (ISO 標準 8601、セクション 3.17 に準拠)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Wednesday
FirstDayOfWeek.Thursday 5 Thursday
FirstDayOfWeek.Friday 6 Friday
FirstDayOfWeek.Saturday 7 Saturday

WeekOfYear引数には、次のいずれかの設定を指定できます。

列挙値 価値 Description
FirstWeekOfYear.System 0 システム設定で指定された年の最初の週
FirstWeekOfYear.Jan1 1 1 月 1 日が発生する週 (既定)
FirstWeekOfYear.FirstFourDays 2 新年に 4 日以上ある週 (ISO 標準 8601、セクション 3.17 に準拠)
FirstWeekOfYear.FirstFullWeek 3 新年の最初の週

こちらもご覧ください

適用対象

DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)

ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb
ソース:
DateAndTime.vb

Date1からDate2を減算して、2 つのDate値間の時間間隔の数を指定する長い値を指定します。

public static long DateDiff(string Interval, object? Date1, object? Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
public static long DateDiff(string Interval, object Date1, object Date2, Microsoft.VisualBasic.FirstDayOfWeek DayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Microsoft.VisualBasic.FirstWeekOfYear WeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1);
static member DateDiff : string * obj * obj * Microsoft.VisualBasic.FirstDayOfWeek * Microsoft.VisualBasic.FirstWeekOfYear -> int64
Public Function DateDiff (Interval As String, Date1 As Object, Date2 As Object, Optional DayOfWeek As FirstDayOfWeek = Microsoft.VisualBasic.FirstDayOfWeek.Sunday, Optional WeekOfYear As FirstWeekOfYear = Microsoft.VisualBasic.FirstWeekOfYear.Jan1) As Long

パラメーター

Interval
String

必須。 DateIntervalとDate1の差の単位として使用する時間間隔を表すDate2列挙値または文字列式。

Date1
Object

必須。 計算に使用する最初の日付/時刻値。

Date2
Object

必須。 計算に使用する 2 番目の日付/時刻値。

DayOfWeek
FirstDayOfWeek

このフィールドは省略可能です。 週の最初の曜日を指定する FirstDayOfWeek 列挙体から選択された値。 指定しない場合は、Sunday が使用されます。

WeekOfYear
FirstWeekOfYear

このフィールドは省略可能です。 年の最初の週を指定する FirstWeekOfYear 列挙体から選択された値。 指定しない場合は、Jan1 が使用されます。

返品

2 つの Date 値間の時間間隔の数を指定する long 値。

例外

Date1、 Date2、または DayofWeek が範囲外です。

Date1 または Date2 が無効な型です。

例

この例では、 DateDiff 関数を使用して、特定の日付から今日までの日数を表示します。

Dim date2Entered As String = InputBox("Enter a date")

Try
    Dim date2 As Date = Date.Parse(date2Entered)
    Dim date1 As Date = Now

    ' Determine the number of days between the two dates.
    Dim days As Long = DateDiff(DateInterval.Day, date1, date2)

    ' This statement has a string interval argument, and
    ' is equivalent to the above statement.
    'Dim days As Long = DateDiff("d", date1, date2)

    MessageBox.Show("Days from today: " & days.ToString)
Catch ex As Exception
    MessageBox.Show("Invalid Date: " & ex.Message)
End Try

注釈

DateDiff関数を使用すると、2 つの日付/時刻値の間に指定された時間間隔の数を確認できます。 たとえば、 DateDiff を使用して、2 つの日付の間の日数、または今日から年末までの週数を計算できます。

Behavior

  • パラメーターの処理。 DateDiffは、差を生成するためにDate1の値からDate2の値を減算します。 呼び出し元プログラムでは、どちらの値も変更されません。

  • 戻り値。 Date1とDate2はDateデータ型であるため、システム タイマーでは 100 ナノ秒のティックに正確な日付と時刻の値が保持されます。 ただし、 DateDiff は常に時間間隔の数を Long 値として返します。

    Date1 Date2よりも後の日付と時刻を表す場合、DateDiffは負の値を返します。

  • 日の間隔。 IntervalがDateInterval.DayOfYearに設定されている場合、DateInterval.Dayは時間間隔の意味のある単位ではないため、DayOfYearと同じように扱われます。

  • 週の間隔。 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)
    

    前の例では、2 つの日付の差が 7 日未満であるため、 DateDiff は 0 から wD を返しますが、それぞれのカレンダー週の最初の日には 7 日間の差があるため、1 から wY を返します。

  • 間隔が大きい。 IntervalがDateInterval.Yearに設定されている場合、戻り値はDate1とDate2の年部分から純粋に計算されます。 同様に、 DateInterval.Month の戻り値は、引数の年と月の部分から、および 2 つの日付を含む四半期の DateInterval.Quarter から純粋に計算されます。

    たとえば、12 月 31 日から翌年の 1 月 1 日を比較すると、 DateDiff は、最大で 1 日しか経過していなくても、 DateInterval.Year、 DateInterval.Quarter、または DateInterval.Monthに対して 1 を返します。

    複数の時代 (年号) を持つ日本語などのカルチャの場合、 DateDiff メソッドは、その差が 2 つ以上の時代 (年号) にまたがる場合、年の差を返しません。 代わりに、次の例に示すように、 Year プロパティによって返される値の差を計算 date2.Year - date1.Year。

  • その他の間隔。 すべての Date 値は DateTime 構造体でサポートされているため、そのメソッドを使用すると、時間間隔を検索するための追加のオプションが提供されます。 たとえば、Subtract メソッドは、オーバーロードされた形式のいずれかで使用できます。DateTime.SubtractTimeSpan変数からDateを減算して別のDate値を返し、DateTime.SubtractDate値を減算して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 Double = runLength.TotalMilliseconds
    

Interval引数には、次のいずれかの設定を指定できます。

列挙値 文字列値 時間差の単位
DateInterval.Day "d" 日
DateInterval.DayOfYear "y" 日
DateInterval.Hour "h" 時
DateInterval.Minute "n" 分
DateInterval.Month "m" 月
DateInterval.Quarter "q" 四半期グラフ
DateInterval.Second エス 秒
DateInterval.Weekday "w" 週
DateInterval.WeekOfYear "ww" カレンダーの週
DateInterval.Year "yyyy" 年

DayOfWeek引数には、次のいずれかの設定を指定できます。

列挙値 価値 Description
FirstDayOfWeek.System 0 システム設定で指定された週の最初の曜日
FirstDayOfWeek.Sunday 1 日曜日 (既定)
FirstDayOfWeek.Monday 2 月曜日 (ISO 標準 8601、セクション 3.17 に準拠)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 Wednesday
FirstDayOfWeek.Thursday 5 Thursday
FirstDayOfWeek.Friday 6 Friday
FirstDayOfWeek.Saturday 7 Saturday

WeekOfYear引数には、次のいずれかの設定を指定できます。

列挙値 価値 Description
FirstWeekOfYear.System 0 システム設定で指定された年の最初の週
FirstWeekOfYear.Jan1 1 1 月 1 日が発生する週 (既定)
FirstWeekOfYear.FirstFourDays 2 新年に 4 日以上ある週 (ISO 標準 8601、セクション 3.17 に準拠)
FirstWeekOfYear.FirstFullWeek 3 新年の最初の週

こちらもご覧ください

適用対象