Aracılığıyla paylaş


DateAndTime.DateDiff Yöntem

Tanım

İki Date değer arasındaki zaman aralıklarının sayısını belirten bir değer döndürür.

Aşırı Yüklemeler

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

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer vermek için Date1Date2 çıkarır.

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

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer vermek için Date1Date2 çıkarır.

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

Kaynak:
DateAndTime.vb
Kaynak:
DateAndTime.vb
Kaynak:
DateAndTime.vb

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer vermek için Date1Date2 çıkarır.

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

Parametreler

Interval
DateInterval

Gerekli. Date1 ile Date2arasındaki fark birimi olarak kullanmak istediğiniz zaman aralığını temsil eden bir DateInterval numaralandırma değeri veya dize ifadesi.

Date1
DateTime

Gerekli. Hesaplamada kullanmak istediğiniz ilk tarih/saat değeri.

Date2
DateTime

Gerekli. Hesaplamada kullanmak istediğiniz ikinci tarih/saat değeri.

DayOfWeek
FirstDayOfWeek

Opsiyonel. FirstDayOfWeek numaralandırmasından seçilen ve haftanın ilk gününü belirten bir değer. Belirtilmezse, Sunday kullanılır.

WeekOfYear
FirstWeekOfYear

Opsiyonel. FirstWeekOfYear numaralandırmasından seçilen ve yılın ilk haftasını belirten bir değer. Belirtilmezse, Jan1 kullanılır.

Döndürülenler

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer.

Özel durumlar

Date1, Date2veya DayofWeek aralık dışında.

Date1 veya Date2 geçersiz türde.

Örnekler

Bu örnekte, belirli bir tarih ile bugün arasındaki gün sayısını görüntülemek için DateDiff işlevi kullanılır.

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

Açıklamalar

İki tarih/saat değeri arasında belirtilen zaman aralıklarının sayısını belirlemek için DateDiff işlevini kullanabilirsiniz. Örneğin, iki tarih arasındaki gün sayısını veya bugün ile yıl sonu arasındaki hafta sayısını hesaplamak için DateDiff kullanabilirsiniz.

Davranış

  • Parametrelerin işlenmesi. DateDiff, farkı oluşturmak için Date1 değerini Date2 değerinden çıkarır. Çağıran programda hiçbir değer değiştirilmez.

  • Dönüş Değerleri. Date1 ve Date2Date veri türünde olduğundan, sistem zamanlayıcıda 100 nanosaniyelik değere doğru tarih ve saat değerlerini tutarlar. Ancak DateDiff her zaman zaman aralıklarının sayısını Long değeri olarak döndürür.

    Date1 Date2'den sonraki bir tarih ve saati temsil ederse DateDiff negatif bir sayı döndürür.

  • Gün Aralıkları. Interval DateInterval.DayOfYearolarak ayarlanırsa, DayOfYear bir zaman aralığı için anlamlı bir birim olmadığından DateInterval.Dayolarak değerlendirilir.

  • Hafta Aralıkları. Interval DateInterval.WeekOfYearolarak ayarlanırsa, dönüş değeri Date1 içeren haftanın ilk günü ile Date2içeren haftanın ilk günü arasındaki hafta sayısını temsil eder. Aşağıdaki örnekte bunun DateInterval.Weekday'dan nasıl farklı sonuçlar ürettiği gösterilmektedir.

    ' 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)
    

    Yukarıdaki örnekte, iki tarih arasındaki fark yedi günden az olduğundan DateDiff 0 ile wD arası döndürür, ancak ilgili takvim haftalarının ilk günleri arasında yedi günlük bir fark olduğundan 1 ile wY arasında bir değer döndürür.

  • Daha Büyük Aralıklar. Interval DateInterval.Yearolarak ayarlanırsa, dönüş değeri yalnızca Date1 ve Date2yıl bölümlerinden hesaplanır. Benzer şekilde, DateInterval.Month için dönüş değeri yalnızca bağımsız değişkenlerin yıl ve ay bölümlerinden ve iki tarihi içeren üç aylık dönemlerden DateInterval.Quarter hesaplanır.

    Örneğin, 31 Aralık ile sonraki yılın 1 Ocak'ını karşılaştırırken, DateDiff en fazla bir gün geçmesine rağmen DateInterval.Year, DateInterval.Quarterveya DateInterval.Monthiçin 1 döndürür.

    Birden çok çağı olan Japonca gibi kültürler için DateDiff yöntemi, fark iki veya daha fazla çağa yayılmışsa yıllar içinde bir fark döndürmez. Bunun yerine, aşağıdaki örnekte gösterildiği gibi Year özelliği tarafından döndürülen değerlerdeki farkı hesaplayabilirsiniz: date2.Year - date1.Year.

  • Diğer Aralıklar. Her Date değeri bir DateTime yapısı tarafından desteklendiğinden, yöntemleri size zaman aralıklarını bulma konusunda ek seçenekler sağlar. Örneğin, Subtract yöntemini aşırı yüklenmiş formlarından birinde kullanabilirsiniz: DateTime.Subtract başka bir Date değeri döndürmek için bir TimeSpanDate değişkenden çıkarır ve DateTime.SubtractTimeSpandöndürmek için Date bir değeri çıkarır. Aşağıdaki örnekte gösterildiği gibi kaç milisaniye sürdüğünü bulmak için bir işlemi zamanlayabilirsiniz.

    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 bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Dize değeri Zaman farkı birimi
DateInterval.Day "d" Gün
DateInterval.DayOfYear "y" Gün
DateInterval.Hour "h" Saat
DateInterval.Minute "n" Dakika
DateInterval.Month "m" Ay
DateInterval.Quarter "q" Çeyrek
DateInterval.Second "s" Saniye
DateInterval.Weekday "w" Hafta
DateInterval.WeekOfYear "ww" Takvim haftası
DateInterval.Year "yyyy" Yıl

DayOfWeek bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Değer Tarif
FirstDayOfWeek.System 0 Sistem ayarlarında haftanın ilk günü belirtildi
FirstDayOfWeek.Sunday 1 Pazar (varsayılan)
FirstDayOfWeek.Monday 2 Pazartesi (ISO standardı 8601, bölüm 3.17 ile uyumludur)
FirstDayOfWeek.Tuesday 3 Salı
FirstDayOfWeek.Wednesday 4 Çarşamba
FirstDayOfWeek.Thursday 5 Perşembe
FirstDayOfWeek.Friday 6 Cuma
FirstDayOfWeek.Saturday 7 Cumartesi

WeekOfYear bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Değer Tarif
FirstWeekOfYear.System 0 Sistem ayarlarında yılın ilk haftası belirtildi
FirstWeekOfYear.Jan1 1 1 Ocak'ın gerçekleştiği hafta (varsayılan)
FirstWeekOfYear.FirstFourDays 2 Yeni yılda en az dört günü olan hafta (ISO standardı 8601, bölüm 3.17 ile uyumludur)
FirstWeekOfYear.FirstFullWeek 3 Yeni yılın ilk tam haftası

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
DateAndTime.vb
Kaynak:
DateAndTime.vb
Kaynak:
DateAndTime.vb

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer vermek için Date1Date2 çıkarır.

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

Parametreler

Interval
String

Gerekli. Date1 ile Date2arasındaki fark birimi olarak kullanmak istediğiniz zaman aralığını temsil eden bir DateInterval numaralandırma değeri veya dize ifadesi.

Date1
Object

Gerekli. Hesaplamada kullanmak istediğiniz ilk tarih/saat değeri.

Date2
Object

Gerekli. Hesaplamada kullanmak istediğiniz ikinci tarih/saat değeri.

DayOfWeek
FirstDayOfWeek

Opsiyonel. FirstDayOfWeek numaralandırmasından seçilen ve haftanın ilk gününü belirten bir değer. Belirtilmezse, Sunday kullanılır.

WeekOfYear
FirstWeekOfYear

Opsiyonel. FirstWeekOfYear numaralandırmasından seçilen ve yılın ilk haftasını belirten bir değer. Belirtilmezse, Jan1 kullanılır.

Döndürülenler

İki Date değer arasındaki zaman aralıklarının sayısını belirten uzun bir değer.

Özel durumlar

Date1, Date2veya DayofWeek aralık dışında.

Date1 veya Date2 geçersiz türde.

Örnekler

Bu örnekte, belirli bir tarih ile bugün arasındaki gün sayısını görüntülemek için DateDiff işlevi kullanılır.

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

Açıklamalar

İki tarih/saat değeri arasında belirtilen zaman aralıklarının sayısını belirlemek için DateDiff işlevini kullanabilirsiniz. Örneğin, iki tarih arasındaki gün sayısını veya bugün ile yıl sonu arasındaki hafta sayısını hesaplamak için DateDiff kullanabilirsiniz.

Davranış

  • Parametrelerin işlenmesi. DateDiff, farkı oluşturmak için Date1 değerini Date2 değerinden çıkarır. Çağıran programda hiçbir değer değiştirilmez.

  • Dönüş Değerleri. Date1 ve Date2Date veri türünde olduğundan, sistem zamanlayıcıda 100 nanosaniyelik değere doğru tarih ve saat değerlerini tutarlar. Ancak DateDiff her zaman zaman aralıklarının sayısını Long değeri olarak döndürür.

    Date1 Date2'den sonraki bir tarih ve saati temsil ederse DateDiff negatif bir sayı döndürür.

  • Gün Aralıkları. Interval DateInterval.DayOfYearolarak ayarlanırsa, DayOfYear bir zaman aralığı için anlamlı bir birim olmadığından DateInterval.Dayolarak değerlendirilir.

  • Hafta Aralıkları. Interval DateInterval.WeekOfYearolarak ayarlanırsa, dönüş değeri Date1 içeren haftanın ilk günü ile Date2içeren haftanın ilk günü arasındaki hafta sayısını temsil eder. Aşağıdaki örnekte bunun DateInterval.Weekday'dan nasıl farklı sonuçlar ürettiği gösterilmektedir.

    ' 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)
    

    Yukarıdaki örnekte, iki tarih arasındaki fark yedi günden az olduğundan DateDiff 0 ile wD arası döndürür, ancak ilgili takvim haftalarının ilk günleri arasında yedi günlük bir fark olduğundan 1 ile wY arasında bir değer döndürür.

  • Daha Büyük Aralıklar. Interval DateInterval.Yearolarak ayarlanırsa, dönüş değeri yalnızca Date1 ve Date2yıl bölümlerinden hesaplanır. Benzer şekilde, DateInterval.Month için dönüş değeri yalnızca bağımsız değişkenlerin yıl ve ay bölümlerinden ve iki tarihi içeren üç aylık dönemlerden DateInterval.Quarter hesaplanır.

    Örneğin, 31 Aralık ile sonraki yılın 1 Ocak'ını karşılaştırırken, DateDiff en fazla bir gün geçmesine rağmen DateInterval.Year, DateInterval.Quarterveya DateInterval.Monthiçin 1 döndürür.

    Birden çok çağı olan Japonca gibi kültürler için DateDiff yöntemi, fark iki veya daha fazla çağa yayılmışsa yıllar içinde bir fark döndürmez. Bunun yerine, aşağıdaki örnekte gösterildiği gibi Year özelliği tarafından döndürülen değerlerdeki farkı hesaplayabilirsiniz: date2.Year - date1.Year.

  • Diğer Aralıklar. Her Date değeri bir DateTime yapısı tarafından desteklendiğinden, yöntemleri size zaman aralıklarını bulma konusunda ek seçenekler sağlar. Örneğin, Subtract yöntemini aşırı yüklenmiş formlarından birinde kullanabilirsiniz: DateTime.Subtract başka bir Date değeri döndürmek için bir TimeSpanDate değişkenden çıkarır ve DateTime.SubtractTimeSpandöndürmek için Date bir değeri çıkarır. Aşağıdaki örnekte gösterildiği gibi kaç milisaniye sürdüğünü bulmak için bir işlemi zamanlayabilirsiniz.

    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 bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Dize değeri Zaman farkı birimi
DateInterval.Day "d" Gün
DateInterval.DayOfYear "y" Gün
DateInterval.Hour "h" Saat
DateInterval.Minute "n" Dakika
DateInterval.Month "m" Ay
DateInterval.Quarter "q" Çeyrek
DateInterval.Second "s" Saniye
DateInterval.Weekday "w" Hafta
DateInterval.WeekOfYear "ww" Takvim haftası
DateInterval.Year "yyyy" Yıl

DayOfWeek bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Değer Tarif
FirstDayOfWeek.System 0 Sistem ayarlarında haftanın ilk günü belirtildi
FirstDayOfWeek.Sunday 1 Pazar (varsayılan)
FirstDayOfWeek.Monday 2 Pazartesi (ISO standardı 8601, bölüm 3.17 ile uyumludur)
FirstDayOfWeek.Tuesday 3 Salı
FirstDayOfWeek.Wednesday 4 Çarşamba
FirstDayOfWeek.Thursday 5 Perşembe
FirstDayOfWeek.Friday 6 Cuma
FirstDayOfWeek.Saturday 7 Cumartesi

WeekOfYear bağımsız değişkeni aşağıdaki ayarlardan birine sahip olabilir.

Numaralandırma değeri Değer Tarif
FirstWeekOfYear.System 0 Sistem ayarlarında yılın ilk haftası belirtildi
FirstWeekOfYear.Jan1 1 1 Ocak'ın gerçekleştiği hafta (varsayılan)
FirstWeekOfYear.FirstFourDays 2 Yeni yılda en az dört günü olan hafta (ISO standardı 8601, bölüm 3.17 ile uyumludur)
FirstWeekOfYear.FirstFullWeek 3 Yeni yılın ilk tam haftası

Ayrıca bkz.

Şunlara uygulanır