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.

COMO OBTENER MINUTOS

Foro de Xailer profesional en español
PEDRO DE LEON RODAS[1]
Posts: 136
Joined: Thu Jul 05, 2007 4:52 am

COMO OBTENER MINUTOS

Postby PEDRO DE LEON RODAS[1] » Thu Feb 14, 2008 9:07 am

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
desarrollo
Posts: 109
Joined: Mon Apr 02, 2007 10:12 am

COMO OBTENER MINUTOS

Postby desarrollo » Thu Feb 14, 2008 9:16 am

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:47b3f523@ozsrv2.ozlan.local...
> 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
>
>
>
>
>
>
jrcpoli
Posts: 240
Joined: Wed Oct 25, 2006 8:55 pm

COMO OBTENER MINUTOS

Postby jrcpoli » Thu Feb 14, 2008 12:35 pm

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
>
>
>
>
>
>
>
José Ramón Castro.
User avatar
ignacio
Site Admin
Posts: 8574
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

COMO OBTENER MINUTOS

Postby ignacio » Thu Feb 14, 2008 2:47 pm

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:47b3f523@ozsrv2.ozlan.local...
> 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
>
>
>
>
>
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Rolando
Posts: 191
Joined: Mon May 08, 2006 2:10 pm

COMO OBTENER MINUTOS

Postby Rolando » Thu Feb 14, 2008 11:38 pm

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$1@ozsrv2.ozlan.local...
> 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:47b3f523@ozsrv2.ozlan.local...
>> 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
>>
>>
>>
>>
>>
>>
>
>

Return to “Spanish”