Visual Basic 语言参考   DateDiff 函数请参见
DateAdd 函数 | DatePart 函数 | Day 函数 | Format 函数 | Now 属性 | Weekday 函数 | Year 函数 | Date 数据类型 | System 命名空间 | DateTime 结构 | TimeSpan 结构 | ArgumentException 类 | InvalidCastException 类
返回一个 Long 值,该值指定两个 Date 值之间的时间间隔数。Public Overloads Function DateDiff( _
   ByVal Interval As DateInterval, _
   ByVal Date1 As DateTime, _
   ByVal Date2 As DateTime, _
   Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
   Optional ByVal  WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
— 或 —Public Overloads Function DateDiff( _
   ByVal Interval As String, _
   ByVal Date1 As Object, _
   ByVal Date2 As Object, _
   Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
   Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long
参数
Interval 
必选。DateInterval 枚举值或 String 表达式,表示要用作 Date1 和 Date2 之间差额单位的时间间隔。 
Date1、Date2 
必选。数据类型为 Date。想用于计算的两个日期/时间值。差额为 Date2 的值减去 Date1 的值。调用程序中的两个值都未更改。 
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  至少有四天属于新年的周(依照 ISO 8601 标准第 3.17 节) 
FirstWeekOfYear.FirstFullWeek  3  新年的第一个全周 异常/错误
异常类型 错误号 条件 
ArgumentException 5 无效 Interval。 
ArgumentException 5 Date 或 DayofWeek 超出范围。 
InvalidCastException 13 Date1 或 Date2 为无效类型。 备注
可以使用 DateDiff 函数来确定两个日期/时间值之间存在多少指定时间间隔。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底相隔几周。若 DateInterval.DayOfYear 设置了 Interval,则对其的处理和 DateInterval.Day 一样,因为 DayOfYear 作为时间间隔单位是没有意义的。若 Interval 被设置为 DateInterval.WeekOfYear,则返回值表示包含 Date1 的周的第一天与包含 Date2 的周的第一天相隔的周数。以下的示例显示了这样所产生的结果与 DateInterval.Weekday 所产生的结果的不同之处。Dim DatTim1 As Date = #1/4/2001#   ' This is a Thursday.
Dim DatTim2 As Date = #1/9/2001#   ' This is the next Tuesday.
' 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 为 WD 返回 0,因为两日期之间的差额小于七天,而它为 WY 返回 1,因为两个日历周各自的第一天之间相差七天。若 Interval 被设置为 DateInterval.Year,则返回值只从 Date1 和 Date2 的年份部分算起。因为 Date1 和 Date2 的数据类型为 Date,所以它们所容纳系统计时器上日期和时间值精确到 100 毫微秒。可是,DateDiff 总是将时间间隔数返回成 Long 数据类型值。若 Date1 表示的日期和时间比 Date2 的晚,则 DateDiff 返回负数。如果有任何参数的值无效,就会发生 ArgumentException 错误。若 Date1 或 Date2 参数的值无法转换为有效 Date 值,则发生 InvalidCastException 错误。注意 将12 月 31 日与来年的 1 月 1 日 比较时,即便只过去一天,DateDiff 给 DateInterval.Year、DateInterval.Quarter 或 DateInterval.Month 都返回 1。
因为每个 Date 值都由 DateTime 结构支持,所以其方法在查找时间间隔中提供了附加选项。例如,可以在它两个重载窗体的任一个内使用 Subtract 方法。一个窗体将 Date 变量减去 TimeSpan 后返回另一 Date 值;另一个则减去 Date 值后返回 TimeSpan。可以给过程计时,以确定它所花的毫秒数,如下所示:Dim StartTime As Date = Now   ' Starting date/time.
' Run the process that is to be timed.
Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
Dim Millisecs As Integer = RunLength.Milliseconds
示例
本示例使用 DateDiff 函数显示给定日期和今天的间隔天数。Dim FirstDate, Msg As String   ' Declare variables.
Dim SecondDate As Date
FirstDate = InputBox("Enter a date")
SecondDate = CDate(FirstDate)
Msg = "Days from today: " & DateDiff(DateInterval.Day, Now, SecondDate)
MsgBox (Msg)

解决方案 »

  1.   

    楼上你在搞笑吧?这个vb函数我很熟,我想知道的是c#里如何实现这个功能??看好了是c###
      

  2.   

    DateTime newTime1 = DateTime.Parse("2003-10-29");
    DateTime newTime2 = DateTime.Parse("2003-11-5");TimeSpan ts = newTime2.Subtract(newTime1);
    Console.WriteLine(ts.Days);
      

  3.   

    DateTime st=DateTime.Parse("2003-10-29");
    DateTime en=DateTime.Parse("2003-11-5");
    TimeSpan span=en-st;
    span.Days的值为7
      

  4.   

    TimeSpan sp = ateTime.Today.Subtract(DateTime.Today.AddDays(3));
    sp.Days;
    不过这个方法只能返回几天,几分钟..
    无法获取几月和几年
      

  5.   

    bencalie(Bencalie) 和 htren(糊涂) 的方法均可行,今天早上我还用,呵呵。