Compartir a través de


DateDiff (Función, Visual Basic)

Actualización: noviembre 2007

Devuelve un valor Long que especifica el número de intervalos de tiempo entre dos valores Date.

Public Overloads Function DateDiff( _
    ByVal Interval As [ DateInterval | String ], _
    ByVal Date1 As DateTime, _
    ByVal Date2 As DateTime, _
    Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
    Optional ByVal  WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long

Parámetros

  • Interval
    Obligatorio. Valor de enumeración DateInterval o expresión String que representa el intervalo de tiempo que se desea utilizar como unidad de diferencia entre Date1 y Date2.

  • Date1
    Obligatorio. Date. Primer valor de fecha u hora que se desea utilizar en el cálculo.

  • Date2
    Obligatorio. Date. Segundo valor de fecha u hora que se desea utilizar en el cálculo.

  • DayOfWeek
    Opcional. Un valor elegido de la enumeración FirstDayOfWeek que especifica el primer día de la semana. Si no se especifica, se utiliza FirstDayOfWeek.Sunday.

  • WeekOfYear
    Opcional. Un valor elegido de la enumeración FirstWeekOfYear que especifica la primera semana del año. Si no se especifica, se utiliza FirstWeekOfYear.Jan1.

Configuración

El argumento Interval puede tener uno de los siguientes valores:

Valor de enumeración

Valor String

Unidad de diferencia temporal

DateInterval.Day

"d"

Día

DateInterval.DayOfYear

"y"

Día

DateInterval.Hour

"h"

Hora

DateInterval.Minute

"n"

Minuto

DateInterval.Month

"m"

Mes

DateInterval.Quarter

"q"

Trimestre

DateInterval.Second

"s"

Segundo

DateInterval.Weekday

"w"

Semana

DateInterval.WeekOfYear

"ww"

Semana del calendario

DateInterval.Year

"yyyy"

Año

El argumento DayOfWeek puede tener uno de los siguientes valores:

Valor de enumeración

Valor

Descripción

FirstDayOfWeek.System

0

Primer día de la semana especificado en la configuración del sistema

FirstDayOfWeek.Sunday

1

Domingo (predeterminado)

FirstDayOfWeek.Monday

2

Lunes (de acuerdo con la norma ISO 8601, sección 3.17)

FirstDayOfWeek.Tuesday

3

Martes

FirstDayOfWeek.Wednesday

4

Miércoles

FirstDayOfWeek.Thursday

5

Jueves

FirstDayOfWeek.Friday

6

Viernes

FirstDayOfWeek.Saturday

7

Sábado

El argumento WeekOfYear puede tener uno de los siguientes valores:

Valor de enumeración

Valor

Descripción

FirstWeekOfYear.System

0

Primera semana del año especificada en la configuración del sistema

FirstWeekOfYear.Jan1

1

Semana en la que se encuentra el 1 de enero (predeterminado)

FirstWeekOfYear.FirstFourDays

2

Semana que contiene al menos cuatro días del nuevo año (de acuerdo con la norma ISO 8601, sección 3.17)

FirstWeekOfYear.FirstFullWeek

3

Primera semana completa del nuevo año

Excepciones

Tipo de excepción

Número de error

Condición

ArgumentException

5

Interval no válido.

ArgumentException

5

Date1, Date2 o DayofWeek está fuera del intervalo.

InvalidCastException

13

Date1 o Date2 pertenece a un tipo no válido.

Consulte la columna "Número de error" si está actualizando aplicaciones de Visual Basic 6.0 que utilizan el control de errores no estructurado. (Se puede comparar el número de error con respecto a Number (Propiedad, objeto Err)). Sin embargo, siempre que sea posible, debe considerarse la posibilidad de sustituir dicho control de errores por Información general sobre el control estructurado de excepciones de Visual Basic.

Comentarios

Se puede utilizar la función DateDiff para determinar el número de intervalos de tiempo especificados que existen entre dos valores de fecha u hora. Por ejemplo, con DateDiff podría calcular el número de días entre dos fechas o el número de semanas entre hoy y el último día del año.

Comportamiento

  • **Tratamiento de Parámetros.**DateDiff resta el valor de Date1 del valor de Date2 para generar la diferencia. Ninguno de los dos valores se modifica en el programa que realiza la llamada.

  • Valores devueltos. Como Date1 y Date2 pertenecen al tipo de datos Date, albergan valores precisos de fecha y hora en pasos de 100 nanosegundos en el temporizador del sistema. Sin embargo, DateDiff siempre devuelve el número de intervalos de tiempo como un valor Long.

    Si Date1 representa una fecha y hora posterior a Date2, DateDiff devuelve un valor negativo.

  • Intervalos de días. Si Interval se establece en DateInterval.DayOfYear, se trata del mismo modo que DateInterval.Day, porque DayOfYear no es una unidad significativa para un intervalo de tiempo.

  • Intervalos de semanas. Si Interval se establece en DateInterval.WeekOfYear, el valor devuelto representa el número de semanas entre el primer día de la semana que contiene Date1 y el primer día de la semana que contiene Date2. En el ejemplo siguiente se muestra cómo este procedimiento genera resultados distintos en 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)
    

    En el ejemplo anterior, DateDiff devuelve 0 a wD porque la diferencia entre las dos fechas es inferior a siete días, pero devuelve 1 a wY porque hay una diferencia de siete días entre los primeros días de las respectivas semanas del calendario.

    Precaución:

    Cuando la parte correspondiente a la hora de Date1 es mayor que la de Date2 e Interval se establece en DateInterval.WeekOfYear, la función DateDiff devuelve un valor que es uno menos que el valor correcto.

  • Intervalos mayores. Si Interval se establece en DateInterval.Year, el valor devuelto se calcula simplemente a partir de las partes del año de Date1 y Date2. Del mismo modo, el valor devuelto para DateInterval.Month se calcula simplemente a partir de las partes del año y del mes de los argumentos, y para DateInterval.Quarter a partir de los trimestres que contienen las dos fechas.

    Por ejemplo, al comparar 31 de diciembre con 1 de enero del año siguiente, DateDiff devuelve 1 para DateInterval.Year, DateInterval.Quarter o DateInterval.Month, aunque únicamente haya transcurrido como mucho un solo día.

  • Otros intervalos. Como todos los valores Date se basan en una estructura DateTime, sus métodos proporcionan opciones adicionales para buscar intervalos de tiempo. Por ejemplo, puede utilizar el método Subtract en cualquiera de sus formas sobrecargadas: DateTime.Subtract resta TimeSpan de una variable Date para devolver otro valor Date, y DateTime.Subtract resta un valor Date para devolver TimeSpan. Se puede cronometrar un proceso para saber cuántos milisegundos tardará, como en el caso siguiente:

    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 Integer = runLength.Milliseconds
    

Ejemplo

En este ejemplo se utiliza la función DateDiff para mostrar el número de días entre una fecha dada y la fecha actual.

Dim firstDate, msg As String
Dim secondDate As Date
firstDate = InputBox("Enter a date")
secondDate = CDate(firstDate)
msg = "Days from today: " & DateDiff(DateInterval.Day, Now, secondDate)
MsgBox(msg)

Requisitos

Espacio de nombres:Microsoft.VisualBasic

**Módulo:**DateAndTime

Ensamblado: Visual Basic Runtime Library (en Microsoft.VisualBasic.dll)

Vea también

Referencia

DateAdd (Función, Visual Basic)

DatePart (Función, Visual Basic)

Day (Función, Visual Basic)

Format (Función)

Now (Propiedad)

Weekday (Función, Visual Basic)

Year (Función, Visual Basic)

Date (Tipo de datos, Visual Basic)

DateTime

TimeSpan