COMO OBTENER MINUTOS
Publicado: Jue Feb 14, 2008 9:07 am
por PEDRO DE LEON RODAS[1]
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
Publicado: Jue Feb 14, 2008 9:16 am
por desarrollo
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
>
>
>
>
>
>
COMO OBTENER MINUTOS
Publicado: Jue Feb 14, 2008 12:35 pm
por jrcpoli
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
>
>
>
>
>
>
>
COMO OBTENER MINUTOS
Publicado: Jue Feb 14, 2008 2:47 pm
por ignacio
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
>
>
>
>
>
>
COMO OBTENER MINUTOS
Publicado: Jue Feb 14, 2008 11:38 pm
por Rolando
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
>>
>>
>>
>>
>>
>>
>
>