次の方法で共有


DateAndTime.DateDiff メソッド

定義

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

オーバーロード

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

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

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

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

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

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

Date2 から Date1 を減算して、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

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

Date1
DateTime

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

Date2
DateTime

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

戻り値

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

例外

Date1Date2、または 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 つの日付の間の日数、または今日から年末までの週数を計算できます。

振舞い

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

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

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

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

  • 週の間隔。 IntervalDateInterval.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 を返します。

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

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

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

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

こちらもご覧ください

適用対象

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

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

Date2 から Date1 を減算して、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

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

Date1
Object

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

Date2
Object

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

DayOfWeek
FirstDayOfWeek

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

WeekOfYear
FirstWeekOfYear

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

戻り値

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

例外

Date1Date2、または 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 つの日付の間の日数、または今日から年末までの週数を計算できます。

振舞い

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

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

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

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

  • 週の間隔。 IntervalDateInterval.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 を返します。

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

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

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

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

こちらもご覧ください

適用対象