Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
empleados.
Estoy tratando de trabajar con DATETIME().
Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos DateTime()?
Ejemplo:
Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
DATETIME()
Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
Logicamente deberia ser asi
Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
convertir despues, pero no lo hace
Espero haberme explicado.
De antemano mil gracias
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
COMO OBTENER MINUTOS
-
- Mensajes: 136
- Registrado: Jue Jul 05, 2007 4:52 am
-
- Mensajes: 109
- Registrado: Lun Abr 02, 2007 10:12 am
COMO OBTENER MINUTOS
Pedro,
Lo habitual es pasar a segundos todo, hacer el calculo y volverlo a
convertir al formato deseado.
Saludos
Jose A. Suarez
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
> DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
Lo habitual es pasar a segundos todo, hacer el calculo y volverlo a
convertir al formato deseado.
Saludos
Jose A. Suarez
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
> DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
COMO OBTENER MINUTOS
Saludos Pedro:
Te paso unas funciones:
FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
// Calcula el tiempo transcurrido entre dos fechas con las horas
// Ejemplo 29/06/2006 22:00:00 y las 03/07/2006 21:30:00
// El tiempo en segundos de obtiene del array[4,2]
LOCAL nTotalSec, nCtr, nConstant, nTemp, aRetVal[4,2]
IF ! ( VALTYPE(dStart) $ 'DC' )
dStart := DATE()
ELSEIF VALTYPE(dStart) == 'C'
cTimeStart := dStart
dStart := DATE()
ENDIF
IF ! ( VALTYPE(dEnd) $ 'DC' )
dEnd := DATE()
ELSEIF VALTYPE(dEnd) == 'C'
cTimeEnd := dEnd
dEnd := DATE()
ENDIF
IF( VALTYPE(cTimeStart) != 'C', cTimeStart := '00:00:00', )
IF( VALTYPE(cTimeEnd) != 'C', cTimeEnd := '00:00:00', )
nTotalSec := (dEnd - dStart) * 86400 + ;
VAL(cTimeEnd) * 3600 + ;
VAL(SUBSTR(cTimeEnd,AT(':', cTimeEnd)+1,2)) * 60 + ;
IF(RAT(':', cTimeEnd) == AT(':', cTimeEnd), 0, ;
VAL(SUBSTR(cTimeEnd,RAT(':', cTimeEnd)+1))) - ;
VAL(cTimeStart) * 3600 - ;
VAL(SUBSTR(cTimeStart,AT(':', cTimeStart)+1,2)) * 60 - ;
IF(RAT(':', cTimeStart) == AT(':', cTimeStart), 0, ;
VAL(SUBSTR(cTimeStart,RAT(':', cTimeStart)+1)))
nTemp := nTotalSec
FOR nCtr = 1 to 4
nConstant := IF(nCtr == 1, 86400, IF(nCtr == 2, 3600, IF( nCtr ==
3, 60, 1)))
aRetVal[nCtr,1] := INT(nTemp/nConstant)
aRetval[nCtr,2] := nTotalSec / nConstant
nTemp -= aRetVal[nCtr,1] * nConstant
NEXT
RETURN aRetVal
//---------------------------------------------------------- --------------------
FUNCTION FT_ELTIME(cTIME1,cTIME2)
// Calcula el tiempo transcurrido entre dos horas
// Ejemplo "12:00:00" y las "23:00:00" el tiempo lo da en hh:mm.ss
local nTIME1, nTIME2, nDELSECS, nHRS, nMINS, nSECS, nSECS1, nSECS2
nSECS1 := (val(substr(cTIME1,1,2)) * 3600) +;
(val(substr(cTIME1,4,2)) * 60) + (val(substr(cTIME1,7)))
nSECS2 := (val(substr(cTIME2,1,2)) * 3600) +;
(val(substr(cTIME2,4,2)) * 60) + (val(substr(cTIME2,7)))
nDELSECS := abs(nSECS2 - nSECS1)
nHRS := int(nDELSECS / 3600)
nMINS := int((nDELSECS - nHRS * 3600) / 60)
nSECS := nDELSECS - (nHRS * 3600) - (nMINS * 60)
RETURN right("00" + ltrim(str(nHRS)),2) + ;
":" + ;
right("00" + ltrim(str(nMINS)),2) + ;
":" + ;
right("00" + ltrim(str(nSECS)),2)
//---------------------------------------------------------- --------------------
FUNCTION TiempoSegundos(dInicial, dFinal, hInicial, hFinal)
// Tiempo total en segundo entre dos fechas y horas
*
LOCAL nSegundos, aDataSeg:= {}
*
aDataSeg := FT_ELAPSED(dInicial, dFinal, hInicial, hFinal)
*
nSegundos := aDataSeg[4,2] //La posición 4,2 da segundos
*
RETURN nSegundos
Debes de incorporar a tu aplicación la librería ct.lib que esta en
librerías de xHarbourd y para incorporala al proyecto ya sabes
propiedades del proyecto->librerias y buscas la librería en donde tengas
instalado xHarbourd en la carpeta lib.
José Ramón Castro.
PEDRO DE LEON RODAS escribió:
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
>
Te paso unas funciones:
FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
// Calcula el tiempo transcurrido entre dos fechas con las horas
// Ejemplo 29/06/2006 22:00:00 y las 03/07/2006 21:30:00
// El tiempo en segundos de obtiene del array[4,2]
LOCAL nTotalSec, nCtr, nConstant, nTemp, aRetVal[4,2]
IF ! ( VALTYPE(dStart) $ 'DC' )
dStart := DATE()
ELSEIF VALTYPE(dStart) == 'C'
cTimeStart := dStart
dStart := DATE()
ENDIF
IF ! ( VALTYPE(dEnd) $ 'DC' )
dEnd := DATE()
ELSEIF VALTYPE(dEnd) == 'C'
cTimeEnd := dEnd
dEnd := DATE()
ENDIF
IF( VALTYPE(cTimeStart) != 'C', cTimeStart := '00:00:00', )
IF( VALTYPE(cTimeEnd) != 'C', cTimeEnd := '00:00:00', )
nTotalSec := (dEnd - dStart) * 86400 + ;
VAL(cTimeEnd) * 3600 + ;
VAL(SUBSTR(cTimeEnd,AT(':', cTimeEnd)+1,2)) * 60 + ;
IF(RAT(':', cTimeEnd) == AT(':', cTimeEnd), 0, ;
VAL(SUBSTR(cTimeEnd,RAT(':', cTimeEnd)+1))) - ;
VAL(cTimeStart) * 3600 - ;
VAL(SUBSTR(cTimeStart,AT(':', cTimeStart)+1,2)) * 60 - ;
IF(RAT(':', cTimeStart) == AT(':', cTimeStart), 0, ;
VAL(SUBSTR(cTimeStart,RAT(':', cTimeStart)+1)))
nTemp := nTotalSec
FOR nCtr = 1 to 4
nConstant := IF(nCtr == 1, 86400, IF(nCtr == 2, 3600, IF( nCtr ==
3, 60, 1)))
aRetVal[nCtr,1] := INT(nTemp/nConstant)
aRetval[nCtr,2] := nTotalSec / nConstant
nTemp -= aRetVal[nCtr,1] * nConstant
NEXT
RETURN aRetVal
//---------------------------------------------------------- --------------------
FUNCTION FT_ELTIME(cTIME1,cTIME2)
// Calcula el tiempo transcurrido entre dos horas
// Ejemplo "12:00:00" y las "23:00:00" el tiempo lo da en hh:mm.ss
local nTIME1, nTIME2, nDELSECS, nHRS, nMINS, nSECS, nSECS1, nSECS2
nSECS1 := (val(substr(cTIME1,1,2)) * 3600) +;
(val(substr(cTIME1,4,2)) * 60) + (val(substr(cTIME1,7)))
nSECS2 := (val(substr(cTIME2,1,2)) * 3600) +;
(val(substr(cTIME2,4,2)) * 60) + (val(substr(cTIME2,7)))
nDELSECS := abs(nSECS2 - nSECS1)
nHRS := int(nDELSECS / 3600)
nMINS := int((nDELSECS - nHRS * 3600) / 60)
nSECS := nDELSECS - (nHRS * 3600) - (nMINS * 60)
RETURN right("00" + ltrim(str(nHRS)),2) + ;
":" + ;
right("00" + ltrim(str(nMINS)),2) + ;
":" + ;
right("00" + ltrim(str(nSECS)),2)
//---------------------------------------------------------- --------------------
FUNCTION TiempoSegundos(dInicial, dFinal, hInicial, hFinal)
// Tiempo total en segundo entre dos fechas y horas
*
LOCAL nSegundos, aDataSeg:= {}
*
aDataSeg := FT_ELAPSED(dInicial, dFinal, hInicial, hFinal)
*
nSegundos := aDataSeg[4,2] //La posición 4,2 da segundos
*
RETURN nSegundos
Debes de incorporar a tu aplicación la librería ct.lib que esta en
librerías de xHarbourd y para incorporala al proyecto ya sabes
propiedades del proyecto->librerias y buscas la librería en donde tengas
instalado xHarbourd en la carpeta lib.
José Ramón Castro.
PEDRO DE LEON RODAS escribió:
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
>
José Ramón Castro.
- ignacio
- Site Admin
- Mensajes: 9257
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
COMO OBTENER MINUTOS
Pedro,
En principio restándolos.
Del Blog de René http://objetoperistente.blogsport.com
** Operaciones con DateTime
? d1 := {^ 2007/04/26 18:30:00 } //devuelve: 04/26/2007 18:30:00.000 ? d2 :=
StoD("20070426") // devuelve: 04/26/2007
? nDiff := d1-d2, "dias" // devuelve: 0.77 días
? TString( nDiff*86400 ) // devuelve: 18:30:00
** Añadiendo 2 dias a un DateTime
? d1 + 2 // devuelve: 04/28/2007 18:30:00.000
** Añadiendo 2 horas a un DateTime
? d1 + 2/24 // devuelve: 04/26/2007 20:30:00.000
** Añadiendo 2 minutos a un DateTime
? d1 + 2/(24*60) // devuelve: 04/26/2007 18:32:00.000
** Añadiendo 2 segundos a un DateTime
? d1 + 2/(24*3600) // devuelve: 04/26/2007 18:30:02.000
Saludos,
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
> DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
En principio restándolos.
Del Blog de René http://objetoperistente.blogsport.com
** Operaciones con DateTime
? d1 := {^ 2007/04/26 18:30:00 } //devuelve: 04/26/2007 18:30:00.000 ? d2 :=
StoD("20070426") // devuelve: 04/26/2007
? nDiff := d1-d2, "dias" // devuelve: 0.77 días
? TString( nDiff*86400 ) // devuelve: 18:30:00
** Añadiendo 2 dias a un DateTime
? d1 + 2 // devuelve: 04/28/2007 18:30:00.000
** Añadiendo 2 horas a un DateTime
? d1 + 2/24 // devuelve: 04/26/2007 20:30:00.000
** Añadiendo 2 minutos a un DateTime
? d1 + 2/(24*60) // devuelve: 04/26/2007 18:32:00.000
** Añadiendo 2 segundos a un DateTime
? d1 + 2/(24*3600) // devuelve: 04/26/2007 18:30:02.000
Saludos,
"PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
> empleados.
>
> Estoy tratando de trabajar con DATETIME().
>
> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
> DateTime()?
>
> Ejemplo:
>
> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
> DATETIME()
> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>
> Logicamente deberia ser asi
> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo pueda
> convertir despues, pero no lo hace
>
> Espero haberme explicado.
>
> De antemano mil gracias
>
>
>
>
>
>
COMO OBTENER MINUTOS
Hermoso ejemplo, gracias.
El link es http://objetopersistente.blogspot.com/
Saludos desde Argentina
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:47b4466e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Pedro,
>
> En principio restándolos.
>
> Del Blog de René http://objetoperistente.blogsport.com
>
> ** Operaciones con DateTime
>
> ? d1 := {^ 2007/04/26 18:30:00 } //devuelve: 04/26/2007 18:30:00.000 ? d2
> := StoD("20070426") // devuelve: 04/26/2007
> ? nDiff := d1-d2, "dias" // devuelve: 0.77 días
> ? TString( nDiff*86400 ) // devuelve: 18:30:00
>
> ** Añadiendo 2 dias a un DateTime
> ? d1 + 2 // devuelve: 04/28/2007 18:30:00.000
>
> ** Añadiendo 2 horas a un DateTime
> ? d1 + 2/24 // devuelve: 04/26/2007 20:30:00.000
>
> ** Añadiendo 2 minutos a un DateTime
> ? d1 + 2/(24*60) // devuelve: 04/26/2007 18:32:00.000
>
> ** Añadiendo 2 segundos a un DateTime
> ? d1 + 2/(24*3600) // devuelve: 04/26/2007 18:30:02.000
>
> Saludos,
>
> "PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
> news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
>> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
>> empleados.
>>
>> Estoy tratando de trabajar con DATETIME().
>>
>> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
>> DateTime()?
>>
>> Ejemplo:
>>
>> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
>> DATETIME()
>> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>>
>> Logicamente deberia ser asi
>> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo
>> pueda convertir despues, pero no lo hace
>>
>> Espero haberme explicado.
>>
>> De antemano mil gracias
>>
>>
>>
>>
>>
>>
>
>
El link es http://objetopersistente.blogspot.com/
Saludos desde Argentina
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:47b4466e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Pedro,
>
> En principio restándolos.
>
> Del Blog de René http://objetoperistente.blogsport.com
>
> ** Operaciones con DateTime
>
> ? d1 := {^ 2007/04/26 18:30:00 } //devuelve: 04/26/2007 18:30:00.000 ? d2
> := StoD("20070426") // devuelve: 04/26/2007
> ? nDiff := d1-d2, "dias" // devuelve: 0.77 días
> ? TString( nDiff*86400 ) // devuelve: 18:30:00
>
> ** Añadiendo 2 dias a un DateTime
> ? d1 + 2 // devuelve: 04/28/2007 18:30:00.000
>
> ** Añadiendo 2 horas a un DateTime
> ? d1 + 2/24 // devuelve: 04/26/2007 20:30:00.000
>
> ** Añadiendo 2 minutos a un DateTime
> ? d1 + 2/(24*60) // devuelve: 04/26/2007 18:32:00.000
>
> ** Añadiendo 2 segundos a un DateTime
> ? d1 + 2/(24*3600) // devuelve: 04/26/2007 18:30:02.000
>
> Saludos,
>
> "PEDRO DE LEON RODAS" <deleonpe@terra.com.mx> escribió en el mensaje
> news:[email=47b3f523@ozsrv2.ozlan.local...]47b3f523@ozsrv2.ozlan.local...[/email]
>> Amigos, estoy tratandode hacer un sistema para checar horas y salidas de
>> empleados.
>>
>> Estoy tratando de trabajar con DATETIME().
>>
>> Mi pregunta. ¿ Como puedo obtener el Total de minutos entre dos
>> DateTime()?
>>
>> Ejemplo:
>>
>> Entrada1=Datetime() /// Esta es mi variable en la que guardo el primer
>> DATETIME()
>> Luego dejo pasar 10 minutos y obtengo mi segundo DATETIME()
>>
>> Logicamente deberia ser asi
>> Resultado=Salida1-Entrada1 // Aqui me daria los segundos para que lo
>> pueda convertir despues, pero no lo hace
>>
>> Espero haberme explicado.
>>
>> De antemano mil gracias
>>
>>
>>
>>
>>
>>
>
>