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 |
---|---|---|
Interval no válido. |
||
Date1, Date2 o DayofWeek está fuera del intervalo. |
||
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)
Weekday (Función, Visual Basic)