DateAndTime.DateDiff メソッド

定義

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

オーバーロード

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

2 つのDate値のDate1間の時間間隔の数を指定する長い値を指定するために減算Date2します。

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

2 つのDate値のDate1間の時間間隔の数を指定する長い値を指定するために減算Date2します。

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

2 つのDate値のDate1間の時間間隔の数を指定する長い値を指定するために減算Date2します。

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

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

Date1
DateTime

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

Date2
DateTime

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

戻り値

Int64

2 つの Date 値の間に含まれる時間間隔の数を指定する long 型の値。

例外

該当する Date1Date2DayofWeek がありません。

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 つの日付/時刻値の間に指定された時間間隔の数を決定できます。 たとえば、2 つの日付の間の日数、または今日から年末までの週数を計算するために使用 DateDiff できます。

動作

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

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

    それ以降Date2の日付と時刻を表す場合Date1は、DateDiff負の数を返します。

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

  • 週の間隔。DateInterval.WeekOfYear設定されている場合Interval、戻り値は、含まれる週の最初の曜日から含まれる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 2 つの日付の差が 7 日未満であるために wD 0 を返しますが、それぞれのカレンダー週の最初の日に 7 日間の差があるため、1 wY を返します。

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

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

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

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

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

列挙値 文字列値 時間差の単位
DateInterval.Day "d" 日間
DateInterval.DayOfYear "y" 日間
DateInterval.Hour "h" 時間
DateInterval.Minute "n"
DateInterval.Month "m" Month
DateInterval.Quarter "q" Quarter
DateInterval.Second "s" Second
DateInterval.Weekday "w"
DateInterval.WeekOfYear "ww" カレンダーの週
DateInterval.Year "yyyy" Year

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

列挙値 説明
FirstDayOfWeek.System 0 システム設定で指定された週の最初の曜日
FirstDayOfWeek.Sunday 1 日曜日 (既定)
FirstDayOfWeek.Monday 2 月曜日 (ISO 標準 8601、セクション 3.17 に準拠)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 水曜日
FirstDayOfWeek.Thursday 5 Thursday
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 新しい年の最初の完全な週

こちらもご覧ください

適用対象

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

2 つのDate値のDate1間の時間間隔の数を指定する長い値を指定するために減算Date2します。

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

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

Date1
Object

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

Date2
Object

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

戻り値

Int64

2 つの Date 値の間に含まれる時間間隔の数を指定する long 型の値。

例外

該当する Date1Date2DayofWeek がありません。

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 つの日付/時刻値の間に指定された時間間隔の数を決定できます。 たとえば、2 つの日付の間の日数、または今日から年末までの週数を計算するために使用 DateDiff できます。

動作

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

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

    それ以降Date2の日付と時刻を表す場合Date1は、DateDiff負の数を返します。

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

  • 週の間隔。DateInterval.WeekOfYear設定されている場合Interval、戻り値は、含まれる週の最初の曜日から含まれる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 2 つの日付の差が 7 日未満であるために wD 0 を返しますが、それぞれのカレンダー週の最初の日に 7 日間の差があるため、1 wY を返します。

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

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

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

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

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

列挙値 文字列値 時間差の単位
DateInterval.Day "d" 日間
DateInterval.DayOfYear "y" 日間
DateInterval.Hour "h" 時間
DateInterval.Minute "n"
DateInterval.Month "m" Month
DateInterval.Quarter "q" Quarter
DateInterval.Second "s" Second
DateInterval.Weekday "w"
DateInterval.WeekOfYear "ww" カレンダーの週
DateInterval.Year "yyyy" Year

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

列挙値 説明
FirstDayOfWeek.System 0 システム設定で指定された週の最初の曜日
FirstDayOfWeek.Sunday 1 日曜日 (既定)
FirstDayOfWeek.Monday 2 月曜日 (ISO 標準 8601、セクション 3.17 に準拠)
FirstDayOfWeek.Tuesday 3 Tuesday
FirstDayOfWeek.Wednesday 4 水曜日
FirstDayOfWeek.Thursday 5 Thursday
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 新しい年の最初の完全な週

こちらもご覧ください

適用対象