AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de fechas y horas
  • Validez de las fechas
  • Calcular la diferencia entre dos fechas con los operadores
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Calcula la diferencia entre dos fechas y horas.
Observaciones:
  • También puede utilizar el operador '-' (menos) para calcular la diferencia entre dos fechas (consulte el párrafo Observaciones).
  • Para mostrar el resultado de esta función en una variable de tipo Duration, utilice la función StringToDuration.
Ejemplo
// Time elapsed since 01/01/1998 at 12:15
Diff is string
Diff = DateTimeDifference("199801011215", SysDateTime())
// Display time elapsed
Info("Time elapsed: " + CR + ...
Left(Diff, 8) + "days" + CR + ...
Middle(Diff, 9, 2) + "hours" + CR + ...
Middle(Diff, 11, 2) + "minutes" + CR + ...
Middle(Diff, 13, 2) + "seconds" + CR + ...
Middle(Diff, 15, 2) + "hundredths of a second")
// To fill a duration from the result of DateTimeDifference
Diff is string = DateTimeDifference("199801011215", SysDateTime())
// convert the difference into a duration variable
Duration1 is Duration = StringToDuration(Diff, durationCenti)

// --------------------------------------------
// Other possible solution
// DateTime1 is DateTime = "199801011215"
// DateTime2 is DateTime = DateTimeSys()
// Duration1 is Duration = DateTime2 - DateTime1
// ----------------------------------------------

// Display time elapsed
Info("Time elapsed: " + Duration1.Day + "days" + CR + ...
Duration1.Hour + "hours" + CR + ...
Duration1.Minute + "minutes" + CR + ...
Duration1.Second + "seconds" + CR + ...
Duration1.Millisecond + "thousandths of a second")
Sintaxis
<Result> = DateTimeDifference(<Start date/time> , <End date/time>)
<Result>: Cadena de caracteres
Número de días, horas, minutos y segundos transcurridos entre dos fechas en formato +/-DDDDDDHHMMSSCC donde:
  • DDDDDD es el número de días transcurridos entre las dos "Fecha - Hora" especificadas,
  • HH es el número de horas,
  • MM es el número de minutos,
  • SS es el número de segundos,
  • CC es el número de centésimas de segundo.
Este resultado proviene de la siguiente operación: <Fecha/Hora de finalización> - <Fecha/Hora de inicio>.
Este resultado contiene el signo '-' si la <Fecha/Hora de inicio> es posterior a la <Fecha/Hora de finalización>.
Atención: Para asignar el resultado a una variable de tipo Duration, utilice la función StringToDuration con la constante durationCenti.
<Start date/time>: Cadena de caracteres o variable de tipo DateTime
Fecha/Hora de inicio del cálculo en uno de los siguientes formatos:
  • AAAAMMDDHHmmSSCC
  • AAAAMMDDHHmmSS
  • AAAAMMDDHHmm
  • AAAAMMDDHH
<End date/time>: Cadena de caracteres o variable de tipo DateTime
Fecha/Hora de finalización del cálculo en uno de los siguientes formatos:
  • AAAAMMDDHHmmSSCC
  • AAAAMMDDHHmmSS
  • AAAAMMDDHHmm
  • AAAAMMDDHH
Observaciones

Validez de las fechas

La validez de las fechas y horas pasadas como parámetros se verifica. Si la fecha u hora no son válidas, se muestra un mensaje. Se considera que una "Fecha - Hora" no es válida si:
  • La fecha no es válida. La validez de las fechas se puede comprobar con la función DateValid.
  • La hora no es válida. La validez de las horas se puede comprobar con la función TimeValid.
Esta función no permite calcular la diferencia entre dos fechas anteriores al 14 de octubre de 1582 (el cambio del calendario juliano al gregoriano no se tendrá en cuenta).
El formato de almacenamiento de fechas permite almacenar fechas del 01/01/0001 al 31/12/9999.
Los cálculos de fechas realizados con las funciones WLanguage o las propiedades WLanguage son precisas a partir del 1 de enero de 1583.

Calcular la diferencia entre dos fechas con los operadores

El operador '-' puede reemplazar a la función DateTimeDifference. También puede asignar el resultado directamente a una variable de tipo Duration, lo que le permite utilizar una duración negativa.
Ejemplos:
interval_duration is Duration
IF date_time_1 > date_time_2 THEN
interval_duration = date_time_1 - date_time_2
ELSE
interval_duration = date_time_2 - date_time_1
END
interval_duration is Duration = date_time_1 - date_time_2
IF interval_duration < 0 THEN
interval_duration = - interval_duration
END
Clasificación Lógica de negocio / UI: Código neutro
Componente: wd290std.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Video DateTimeDifference
https://youtu.be/c-Ih6WpX4Ws

https://windevdesenvolvimento.blogspot.com/2019/05/dicas-2106-windev-webdev-mobile-data-29.html

// EDT_BTN_cALCULAR_DIAS

diferencia is string = DateTimeDifference(EDT_DATA_INICIAL_1, EDT_DATA_FINAL_1)
duracao is Duration=StringToDuration(diferencia, durationCenti)
EDT_dias_1=duracao..Day
amarildo
11 05 2019
Display the result of DateTimeDifference

DateTimeLOGIN = Table.MyLOGIN
DateTimeLOGOUT = Table.MyLOGOUT
MyDuration = DateTimeDifference(DateTimeLOGIN,DateTimeLOGOUT)+"0"
Table.MyDuration = MyDuration

Adding the "0" to the result of the calculation is necessary to get a correct display!

Guenter
29 05 2018
Example
// Time passed since 01/01/1998 at 12:15
sTDatahoraAgenda is string = Middle(StringToDate(EDT_DataAgendamento)+StringToTime(Middle(EDT_DataAgendamento,12,5)),1,12) //"199801011215"
Diff is string
Diff = DateTimeDifference(sTDatahoraAgenda, DateSys() + TimeSys())
//Display the time passed
//Info("Time passed: " + CR + ...
//Left(Diff, 8) + "days" + CR + ...
//Middle(Diff, 9, 2) + "hours" + CR + ...
//Middle(Diff, 11, 2) + "minutes" + CR + ...
//Middle(Diff, 13, 2) + "seconds" + CR + ...
//Middle(Diff, 15, 2) + "hundredths of a second")

//Valida data
nSMinutos is int = Val(Middle(Diff, 11, 2))
IF CBOX_Agendamento..Value = True AND Middle(Diff, 11, 2) < 30
Info("A data e hora agendada tem que ser maior do que 30 minutos")
ok1 = False
ELSE
ok1 = True
END
adrianoboller
27 11 2015

Última modificación: 07/03/2024

Señalar un error o enviar una sugerencia | Ayuda local