Saludos:
Por si existe o alguno ya lo tiene hecho hay alguna función que calcule
el tiempo en segundo entre dos fechas y horas.
Ejemplo: segundos entre el 29/06/2006 a las 22:00:00 y el 03/07/2006 a
las 21:30:00
José Ramón Castro
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.
Traspasar a segundos
Traspasar a segundos
José Ramón Castro.
Traspasar a segundos
José Ramón,
mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
hay una función para hacer lo que necesitas.
Saludos,
José Lalín
mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
hay una función para hacer lo que necesitas.
Saludos,
José Lalín
Traspasar a segundos
José Lalín:
Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
xHabourd, pero en fin alguna vez debe ser la primera.
Gracías.
José Ramón Castro.
José Lalín escribió:
>
> José Ramón,
>
> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
> hay una función para hacer lo que necesitas.
>
> Saludos,
> José Lalín
Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
xHabourd, pero en fin alguna vez debe ser la primera.
Gracías.
José Ramón Castro.
José Lalín escribió:
>
> José Ramón,
>
> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
> hay una función para hacer lo que necesitas.
>
> Saludos,
> José Lalín
José Ramón Castro.
Traspasar a segundos
José Ramón,
Aquí lo tienes.
--------------------------------->>>
/*
* File......: ELAPSED.PRG
* Author....: Jo W. French dba Practical Computing
* CIS ID....: ?
*
* The functions contained herein are the original work of Jo W. French
* and are placed in the public domain.
*
* Modification history:
* ---------------------
*
* Rev 1.3 28 Sep 1992 00:37:56 GLENN
* Jo French cleaned up.
*
* Rev 1.2 15 Aug 1991 23:05:44 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.1 14 Jun 1991 19:51:46 GLENN
* Minor edit to file header
*
* Rev 1.0 01 Apr 1991 01:01:18 GLENN
* Nanforum Toolkit
*
*/
#ifdef FT_TEST
FUNCTION DEMO()
LOCAL dStart, dEnd, cTimeStart, cTimeEnd, n, aDataTest := {}
dStart := CTOD('11/28/90')
dEnd := CTOD('11/30/90')
cTimeStart := "08:00:00"
cTimeEnd := "12:10:30"
aDataTest := FT_ELAPSED(dStart,dEnd,cTimeStart,cTimeEnd)
FOR n = 1 to 4
? aDataTest[n,1], STR(aDataTest[n,2], 12, 4)
?? " "
?? IF(n == 1, 'Days', IF( n== 2, 'Hours', IF( n == 3, 'Mins.',
'Secs.')))
NEXT
RETURN NIL
#endif
/* $DOC$
* $FUNCNAME$
* FT_ELAPSED()
* $CATEGORY$
* Date/Time
* $ONELINER$
* Return elapsed time between two days and/or times
* $SYNTAX$
* FT_ELAPSED([ <dStart> ], [ <dEnd> ], ;
* <cTimeStart>, <cTimeEnd>) -> aTimedata
* $ARGUMENTS$
* <dStart> is any valid date in any date format. Defaults to DATE().
*
* <dEnd> is any valid date in any date format. Defaults to DATE().
*
* <cTimeStart> is a valid Time string of the format 'hh:mm:ss' where
* hh is hours in 24-hour format.
*
* <cTimeEnd> is a valid Time string of the format 'hh:mm:ss' where
* hh is hours in 24-hour format.
* $RETURNS$
* A two-dimensional array containing elapsed time data.
* $DESCRIPTION$
* FT_ELAPSED() calculates the elapsed time between two Date/Time
events.
*
* It returns an array which contains the following data:
*
* aRetVal[1,1] Integer Days aRetVal[1,2] Total Days (nn.nnnn)
* aRetVal[2,1] Integer Hours aRetVal[2,2] Total Hours (nn.nnnn)
* aRetVal[3,1] Integer Minutes aRetVal[3,2] Total Minutes (nn.nnnn)
* aRetVal[4,1] Integer Seconds aRetVal[4,2] Total Seconds (nn)
* $EXAMPLES$
* FT_ELAPSED(CTOD('11/28/90'), CTOD('11/30/90'), '08:00:00',
'12:10:30')
* will return:
*
* aRetVal[1,1] -> 2 (Days) aRetVal[1,2] -> 2.1740 Days
* aRetVal[2,1] -> 4 (Hours) aRetVal[2,2] -> 52.1750 Hours
* aRetVal[3,1] -> 10 (Minutes) aRetVal[3,2] -> 3130.5000 Minutes
* aRetVal[4,1] -> 30 (Seconds) aRetVal[4,2] -> 187830 Seconds
* $END$
*/
FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
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
--------------------------------->>>
Saludos,
José Luis Capel
"José Ramón Castro Polinio" <jrcpoli@terra.es> escribió en el mensaje
news:44eb221d$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Lalín:
> Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
> xHabourd, pero en fin alguna vez debe ser la primera.
> Gracías.
>
> José Ramón Castro.
>
> José Lalín escribió:
>>
>> José Ramón,
>>
>> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
>> hay una función para hacer lo que necesitas.
>>
>> Saludos,
>> José Lalín
Aquí lo tienes.
--------------------------------->>>
/*
* File......: ELAPSED.PRG
* Author....: Jo W. French dba Practical Computing
* CIS ID....: ?
*
* The functions contained herein are the original work of Jo W. French
* and are placed in the public domain.
*
* Modification history:
* ---------------------
*
* Rev 1.3 28 Sep 1992 00:37:56 GLENN
* Jo French cleaned up.
*
* Rev 1.2 15 Aug 1991 23:05:44 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.1 14 Jun 1991 19:51:46 GLENN
* Minor edit to file header
*
* Rev 1.0 01 Apr 1991 01:01:18 GLENN
* Nanforum Toolkit
*
*/
#ifdef FT_TEST
FUNCTION DEMO()
LOCAL dStart, dEnd, cTimeStart, cTimeEnd, n, aDataTest := {}
dStart := CTOD('11/28/90')
dEnd := CTOD('11/30/90')
cTimeStart := "08:00:00"
cTimeEnd := "12:10:30"
aDataTest := FT_ELAPSED(dStart,dEnd,cTimeStart,cTimeEnd)
FOR n = 1 to 4
? aDataTest[n,1], STR(aDataTest[n,2], 12, 4)
?? " "
?? IF(n == 1, 'Days', IF( n== 2, 'Hours', IF( n == 3, 'Mins.',
'Secs.')))
NEXT
RETURN NIL
#endif
/* $DOC$
* $FUNCNAME$
* FT_ELAPSED()
* $CATEGORY$
* Date/Time
* $ONELINER$
* Return elapsed time between two days and/or times
* $SYNTAX$
* FT_ELAPSED([ <dStart> ], [ <dEnd> ], ;
* <cTimeStart>, <cTimeEnd>) -> aTimedata
* $ARGUMENTS$
* <dStart> is any valid date in any date format. Defaults to DATE().
*
* <dEnd> is any valid date in any date format. Defaults to DATE().
*
* <cTimeStart> is a valid Time string of the format 'hh:mm:ss' where
* hh is hours in 24-hour format.
*
* <cTimeEnd> is a valid Time string of the format 'hh:mm:ss' where
* hh is hours in 24-hour format.
* $RETURNS$
* A two-dimensional array containing elapsed time data.
* $DESCRIPTION$
* FT_ELAPSED() calculates the elapsed time between two Date/Time
events.
*
* It returns an array which contains the following data:
*
* aRetVal[1,1] Integer Days aRetVal[1,2] Total Days (nn.nnnn)
* aRetVal[2,1] Integer Hours aRetVal[2,2] Total Hours (nn.nnnn)
* aRetVal[3,1] Integer Minutes aRetVal[3,2] Total Minutes (nn.nnnn)
* aRetVal[4,1] Integer Seconds aRetVal[4,2] Total Seconds (nn)
* $EXAMPLES$
* FT_ELAPSED(CTOD('11/28/90'), CTOD('11/30/90'), '08:00:00',
'12:10:30')
* will return:
*
* aRetVal[1,1] -> 2 (Days) aRetVal[1,2] -> 2.1740 Days
* aRetVal[2,1] -> 4 (Hours) aRetVal[2,2] -> 52.1750 Hours
* aRetVal[3,1] -> 10 (Minutes) aRetVal[3,2] -> 3130.5000 Minutes
* aRetVal[4,1] -> 30 (Seconds) aRetVal[4,2] -> 187830 Seconds
* $END$
*/
FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
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
--------------------------------->>>
Saludos,
José Luis Capel
"José Ramón Castro Polinio" <jrcpoli@terra.es> escribió en el mensaje
news:44eb221d$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Lalín:
> Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
> xHabourd, pero en fin alguna vez debe ser la primera.
> Gracías.
>
> José Ramón Castro.
>
> José Lalín escribió:
>>
>> José Ramón,
>>
>> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
>> hay una función para hacer lo que necesitas.
>>
>> Saludos,
>> José Lalín
Traspasar a segundos
Gracias José Luis, una cosa curiosa en la librería que utilizaba en
Visual Objects existe la misma función con idénticas definiciones y es
de la misma persona así que será cuestión de ver si otras funciones de
esa librería son también aceptadas por Xailer.
José Ramón Castro.
José Luis Capel escribió:
> José Ramón,
>
> Aquí lo tienes.
>
> --------------------------------->>>
> /*
> * File......: ELAPSED.PRG
> * Author....: Jo W. French dba Practical Computing
> * CIS ID....: ?
> *
> * The functions contained herein are the original work of Jo W. French
> * and are placed in the public domain.
> *
> * Modification history:
> * ---------------------
> *
> * Rev 1.3 28 Sep 1992 00:37:56 GLENN
> * Jo French cleaned up.
> *
> * Rev 1.2 15 Aug 1991 23:05:44 GLENN
> * Forest Belt proofread/edited/cleaned up doc
> *
> * Rev 1.1 14 Jun 1991 19:51:46 GLENN
> * Minor edit to file header
> *
> * Rev 1.0 01 Apr 1991 01:01:18 GLENN
> * Nanforum Toolkit
> *
> */
>
>
> #ifdef FT_TEST
>
> FUNCTION DEMO()
> LOCAL dStart, dEnd, cTimeStart, cTimeEnd, n, aDataTest := {}
> dStart := CTOD('11/28/90')
> dEnd := CTOD('11/30/90')
> cTimeStart := "08:00:00"
> cTimeEnd := "12:10:30"
>
> aDataTest := FT_ELAPSED(dStart,dEnd,cTimeStart,cTimeEnd)
> FOR n = 1 to 4
> ? aDataTest[n,1], STR(aDataTest[n,2], 12, 4)
> ?? " "
> ?? IF(n == 1, 'Days', IF( n== 2, 'Hours', IF( n == 3, 'Mins.',
> 'Secs.')))
> NEXT
> RETURN NIL
>
> #endif
>
> /* $DOC$
> * $FUNCNAME$
> * FT_ELAPSED()
> * $CATEGORY$
> * Date/Time
> * $ONELINER$
> * Return elapsed time between two days and/or times
> * $SYNTAX$
> * FT_ELAPSED([ <dStart> ], [ <dEnd> ], ;
> * <cTimeStart>, <cTimeEnd>) -> aTimedata
> * $ARGUMENTS$
> * <dStart> is any valid date in any date format. Defaults to DATE().
> *
> * <dEnd> is any valid date in any date format. Defaults to DATE().
> *
> * <cTimeStart> is a valid Time string of the format 'hh:mm:ss' where
> * hh is hours in 24-hour format.
> *
> * <cTimeEnd> is a valid Time string of the format 'hh:mm:ss' where
> * hh is hours in 24-hour format.
> * $RETURNS$
> * A two-dimensional array containing elapsed time data.
> * $DESCRIPTION$
> * FT_ELAPSED() calculates the elapsed time between two Date/Time
> events.
> *
> * It returns an array which contains the following data:
> *
> * aRetVal[1,1] Integer Days aRetVal[1,2] Total Days (nn.nnnn)
> * aRetVal[2,1] Integer Hours aRetVal[2,2] Total Hours (nn.nnnn)
> * aRetVal[3,1] Integer Minutes aRetVal[3,2] Total Minutes (nn.nnnn)
> * aRetVal[4,1] Integer Seconds aRetVal[4,2] Total Seconds (nn)
> * $EXAMPLES$
> * FT_ELAPSED(CTOD('11/28/90'), CTOD('11/30/90'), '08:00:00',
> '12:10:30')
> * will return:
> *
> * aRetVal[1,1] -> 2 (Days) aRetVal[1,2] -> 2.1740 Days
> * aRetVal[2,1] -> 4 (Hours) aRetVal[2,2] -> 52.1750 Hours
> * aRetVal[3,1] -> 10 (Minutes) aRetVal[3,2] -> 3130.5000 Minutes
> * aRetVal[4,1] -> 30 (Seconds) aRetVal[4,2] -> 187830 Seconds
> * $END$
> */
>
> FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
> 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
> --------------------------------->>>
>
> Saludos,
> José Luis Capel
>
> "José Ramón Castro Polinio" <jrcpoli@terra.es> escribió en el mensaje
> news:44eb221d$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> José Lalín:
>> Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
>> xHabourd, pero en fin alguna vez debe ser la primera.
>> Gracías.
>>
>> José Ramón Castro.
>>
>> José Lalín escribió:
>>> José Ramón,
>>>
>>> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
>>> hay una función para hacer lo que necesitas.
>>>
>>> Saludos,
>>> José Lalín
>
>
Visual Objects existe la misma función con idénticas definiciones y es
de la misma persona así que será cuestión de ver si otras funciones de
esa librería son también aceptadas por Xailer.
José Ramón Castro.
José Luis Capel escribió:
> José Ramón,
>
> Aquí lo tienes.
>
> --------------------------------->>>
> /*
> * File......: ELAPSED.PRG
> * Author....: Jo W. French dba Practical Computing
> * CIS ID....: ?
> *
> * The functions contained herein are the original work of Jo W. French
> * and are placed in the public domain.
> *
> * Modification history:
> * ---------------------
> *
> * Rev 1.3 28 Sep 1992 00:37:56 GLENN
> * Jo French cleaned up.
> *
> * Rev 1.2 15 Aug 1991 23:05:44 GLENN
> * Forest Belt proofread/edited/cleaned up doc
> *
> * Rev 1.1 14 Jun 1991 19:51:46 GLENN
> * Minor edit to file header
> *
> * Rev 1.0 01 Apr 1991 01:01:18 GLENN
> * Nanforum Toolkit
> *
> */
>
>
> #ifdef FT_TEST
>
> FUNCTION DEMO()
> LOCAL dStart, dEnd, cTimeStart, cTimeEnd, n, aDataTest := {}
> dStart := CTOD('11/28/90')
> dEnd := CTOD('11/30/90')
> cTimeStart := "08:00:00"
> cTimeEnd := "12:10:30"
>
> aDataTest := FT_ELAPSED(dStart,dEnd,cTimeStart,cTimeEnd)
> FOR n = 1 to 4
> ? aDataTest[n,1], STR(aDataTest[n,2], 12, 4)
> ?? " "
> ?? IF(n == 1, 'Days', IF( n== 2, 'Hours', IF( n == 3, 'Mins.',
> 'Secs.')))
> NEXT
> RETURN NIL
>
> #endif
>
> /* $DOC$
> * $FUNCNAME$
> * FT_ELAPSED()
> * $CATEGORY$
> * Date/Time
> * $ONELINER$
> * Return elapsed time between two days and/or times
> * $SYNTAX$
> * FT_ELAPSED([ <dStart> ], [ <dEnd> ], ;
> * <cTimeStart>, <cTimeEnd>) -> aTimedata
> * $ARGUMENTS$
> * <dStart> is any valid date in any date format. Defaults to DATE().
> *
> * <dEnd> is any valid date in any date format. Defaults to DATE().
> *
> * <cTimeStart> is a valid Time string of the format 'hh:mm:ss' where
> * hh is hours in 24-hour format.
> *
> * <cTimeEnd> is a valid Time string of the format 'hh:mm:ss' where
> * hh is hours in 24-hour format.
> * $RETURNS$
> * A two-dimensional array containing elapsed time data.
> * $DESCRIPTION$
> * FT_ELAPSED() calculates the elapsed time between two Date/Time
> events.
> *
> * It returns an array which contains the following data:
> *
> * aRetVal[1,1] Integer Days aRetVal[1,2] Total Days (nn.nnnn)
> * aRetVal[2,1] Integer Hours aRetVal[2,2] Total Hours (nn.nnnn)
> * aRetVal[3,1] Integer Minutes aRetVal[3,2] Total Minutes (nn.nnnn)
> * aRetVal[4,1] Integer Seconds aRetVal[4,2] Total Seconds (nn)
> * $EXAMPLES$
> * FT_ELAPSED(CTOD('11/28/90'), CTOD('11/30/90'), '08:00:00',
> '12:10:30')
> * will return:
> *
> * aRetVal[1,1] -> 2 (Days) aRetVal[1,2] -> 2.1740 Days
> * aRetVal[2,1] -> 4 (Hours) aRetVal[2,2] -> 52.1750 Hours
> * aRetVal[3,1] -> 10 (Minutes) aRetVal[3,2] -> 3130.5000 Minutes
> * aRetVal[4,1] -> 30 (Seconds) aRetVal[4,2] -> 187830 Seconds
> * $END$
> */
>
> FUNCTION FT_ELAPSED(dStart, dEnd, cTimeStart, cTimeEnd)
> 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
> --------------------------------->>>
>
> Saludos,
> José Luis Capel
>
> "José Ramón Castro Polinio" <jrcpoli@terra.es> escribió en el mensaje
> news:44eb221d$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> José Lalín:
>> Voy a buscarla aunque tengo poca experiencia en buscar en las fuentes de
>> xHabourd, pero en fin alguna vez debe ser la primera.
>> Gracías.
>>
>> José Ramón Castro.
>>
>> José Lalín escribió:
>>> José Ramón,
>>>
>>> mira en los fuentes de xHarbour, en la carpeta contriblibnfelapsed.prg
>>> hay una función para hacer lo que necesitas.
>>>
>>> Saludos,
>>> José Lalín
>
>
José Ramón Castro.
Traspasar a segundos
José Ramón,
> Gracias José Luis, una cosa curiosa en la librería que utilizaba en
> Visual Objects existe la misma función con idénticas definiciones y es
> de la misma persona así que será cuestión de ver si otras funciones de
> esa librería son también aceptadas por Xailer.
todo o casi todo el código que no dependa del compilador puede ser usado
en Clipper, Harbour, VO, xBase++, etc.
Saludos,
José Lalín
> Gracias José Luis, una cosa curiosa en la librería que utilizaba en
> Visual Objects existe la misma función con idénticas definiciones y es
> de la misma persona así que será cuestión de ver si otras funciones de
> esa librería son también aceptadas por Xailer.
todo o casi todo el código que no dependa del compilador puede ser usado
en Clipper, Harbour, VO, xBase++, etc.
Saludos,
José Lalín