Calculo com horas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

gabriel
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 16 Ago 2003 19:34
Localização: porto belo - sc

Calculo com horas

Mensagem por gabriel »

Estou necessitando fazer um calculo de turno de acordo com a hora e data, podem me ajudar ?

exemplo

data: 10/04/2006

de 06:00am as 14:00pm - 1º turno
de 14:01pm as 22:00pm - 2º turno
de 22:01pm as 05:59am - 3º turno do dia 11/04/2006

Alguem manja?

VAleu :))
atenciosamente
gabriel
clebermano
Usuário Nível 3
Usuário Nível 3
Mensagens: 187
Registrado em: 03 Out 2004 12:39
Contato:

Mensagem por clebermano »

cara vai no site do vagner q tem um funcao mto boa la...
http://www.vagucs.com.br
sessao downloads.
Vastec - Automacao Comercial Ltda - Ribeirao Preto - SP. (16)3968-2299-(16)8154-7828 (16)8121-4139
msn: suporte@clebermano.com.br - email: clebermanorp@yahoo.com.br
Quem nao vive pra servir nao serve pra viver !
gabriel
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 16 Ago 2003 19:34
Localização: porto belo - sc

Mensagem por gabriel »

Cara..nao achei :(

Tem como tu me dar o link?

valeu
atenciosamente
gabriel
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Tente usar: FT_ELAPSED([dStart],[dEnd],cTimeStart,cTimeEnd) aTimeData


Obs: Esta função pertence a lib Nanforum Toolkit v2.1


Abraço,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
digitom
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 06 Abr 2006 13:52
Localização: Anápolis-Go
Contato:

Mensagem por digitom »

Tenta assim:

Código: Selecionar todos


HTurno := Vturno(time(), Date())
@ 02,0 say HTurno


Function V_Turno(Hora, Dia)
IF Hora >= '06:00'  .AND. Hora <= '14:00'
    Return Turno := ´de 06:00am as 14:00pm - 1º turno'
ELSEIF hora >= '14:01' .AND. Hora <= '22:00'
    Return Turno := ´de 14:01pm as 22:00pm - 2º turno´
ELSE
    Return Turno := ´de 22:01pm as 05:59am - 3º turno do dia ' + Dtoc(dia + 1)
ENDIF
Não entendi, qual seria a utilização, mas acho que isso vai te ajudar.
Fui :)
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Mensagem por Paulao »

uso esta funcao para fazer estes calculos
////////////////////


/***
*
* Time.prg
*
* Sample user-defined functions for manipulating time strings
*
* Copyright (c) 1993, Computer Associates International Inc.
* All rights reserved.
*
* NOTE: Compile with /a /m /n /w
*
*/


/***
*
* SecondsAsDays( <nSeconds> ) --> nDays
*
* Convert numeric seconds to days
*
* NOTE: Same as DAYS() in Examplep.prg
*/
FUNCTION SecondsAsDays( nSeconds )
RETURN INT(nSeconds / 86400)



/***
* TimeAsAMPM( <cTime> ) --> cTime
* Convert a time string to 12-hour format
*
* NOTE: Same as AMPM() in Examplep.prg
*/
FUNCTION TimeAsAMPM( cTime )

IF VAL(cTime) < 12
cTime += " am"
ELSEIF VAL(cTime) = 12
cTime += " pm"
ELSE
cTime := STR(VAL(cTime) - 12, 2) + SUBSTR(cTime, 3) + " pm"
ENDIF

RETURN cTime



/***
* TimeAsSeconds( <cTime> ) --> nSeconds
* Convert a time string to number of seconds from midnight
*
* NOTE: Same as SECS() in Examplep.prg
*/
FUNCTION TimeAsSeconds( cTime )
RETURN VAL(cTime) * 3600 + VAL(SUBSTR(cTime, 4)) * 60 +;
VAL(SUBSTR(cTime, 7))



/***
* TimeAsString( <nSeconds> ) --> cTime
* Convert numeric seconds to a time string
*
* NOTE: Same as TSTRING() in Examplep.prg
*/
FUNCTION TimeAsString( nSeconds )
RETURN StrZero(INT(Mod(nSeconds / 3600, 24)), 2, 0) + ":" +;
StrZero(INT(Mod(nSeconds / 60, 60)), 2, 0) + ":" +;
StrZero(INT(Mod(nSeconds, 60)), 2, 0)



/***
* TimeDiff( <cStartTime>, <cEndTime> ) --> cDiffTime
* Return the difference between two time strings in the form hh:mm:ss
*
* NOTE: Same as ELAPTIME() in Examplep.prg
*/
FUNCTION TimeDiff( cStartTime, cEndTime )
ptempo= TimeAsString(IF(cEndTime < cStartTime, 86400 , 0) +;
TimeAsSeconds(cEndTime) - TimeAsSeconds(cStartTime))
RETURN ptempo


FUNCTION TimeDiff2( cStartTime, cEndTime )
ptempo= TimeAsString(IF(cEndTime < cStartTime, 86400 , 0) +;
TimeAsSeconds(cEndTime) - TimeAsSeconds(cStartTime))
RETURN .t.



/***
* TimeIsValid( <cTime> ) --> lValid
* Validate a time string
*
*/
FUNCTION TimeIsValid( cTime )
RETURN VAL(cTime) < 24 .AND. VAL(SUBSTR(cTime, 4)) < 60 .AND.;
VAL(SUBSTR(cTime, 7)) < 60

Responder