Jump to content
Fivewin Brasil

Calcular horas entre datas


Polirep

Recommended Posts

  • 9 years later...

Olá Gente,

Reativei o tópico, por não ter achado isso em xharbour, se tiver por favor me passem mas de qq forma montei o meu, se alguém precisar, esteja a vontade icon_smile_wink.gif


/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/

Func DateDiff(cData1,cData2)

Local nFina,nInic,nTemp,cReto

Local nHorI,nHorF

Local nMinI,nMinF

Local nSecI,nSecF

Local nDias

Default cData2 := TToC(DateTime())

nDias := CtoD(Left(cData2,10))-CtoD(Left(cData1,10))

nHorI := Hour(CToT(cData1))

nHorF := Hour(CToT(cData2))

nMinI := Minute(CToT(cData1))

nMinF := Minute(CToT(cData2))

nSecI := Secs(CToT(cData1))

nSecF := Secs(CToT(cData2))

nFina := nHorF * 3600 +;

nMinF * 60 +;

nSecF

nInic := nHorI * 3600 +;

nMinI * 60 +;

nSecI

nTemp := (nFina-nInic)

cHora := AllTrim(Str(Val(StrZero(Int(Mod((nTemp/3600),24)),2,0))+(nDias*24)))

cReto := cHora+":"+;

StrZero(Int(Mod((nTemp/60 ),60)),2,0)+":"+;

StrZero(Int(Mod((nTemp ),60)),2,0)

Retu(cReto)

id=code>id=code>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

Semana que vem este tópico faz 10 anos... rs

abraços

citação:

Olá Gente,

Reativei o tópico, por não ter achado isso em xharbour, se tiver por favor me passem mas de qq forma montei o meu, se alguém precisar, esteja a vontade icon_smile_wink.gif


/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/

Func DateDiff(cData1,cData2)

Local nFina,nInic,nTemp,cReto

Local nHorI,nHorF

Local nMinI,nMinF

Local nSecI,nSecF

Local nDias

Default cData2 := TToC(DateTime())

nDias := CtoD(Left(cData2,10))-CtoD(Left(cData1,10))

nHorI := Hour(CToT(cData1))

nHorF := Hour(CToT(cData2))

nMinI := Minute(CToT(cData1))

nMinF := Minute(CToT(cData2))

nSecI := Secs(CToT(cData1))

nSecF := Secs(CToT(cData2))

nFina := nHorF * 3600 +;

nMinF * 60 +;

nSecF

nInic := nHorI * 3600 +;

nMinI * 60 +;

nSecI

nTemp := (nFina-nInic)

cHora := AllTrim(Str(Val(StrZero(Int(Mod((nTemp/3600),24)),2,0))+(nDias*24)))

cReto := cHora+":"+;

StrZero(Int(Mod((nTemp/60 ),60)),2,0)+":"+;

StrZero(Int(Mod((nTemp ),60)),2,0)

Retu(cReto)

id=code>id=code>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ

Link to comment
Share on other sites

olá , uso a seguinte rotina em 1 sistema de estacionamento rotativo, veja se te ajuda:

William


*dData1 := CtoD("01/11/2007")

*dData2 := CtoD("02/11/2007")

*cHora1 := "21:00:00"

*cHora2 := "00:30:00"

//--------------------------------------------------------------

Function Intervalo( dData1, dData2, cHora1, cHora2 )

local nDias := dData2-dData1

local nHoras, nSec1, nSec2, nSobra, cH, cM, cS

nSec1 := Segundos( cHora1 )

nSec2 := Segundos( cHora2 )

if nSec1 > nSec2

nDias--

nSobra := Segundos("24:00:00")-nSec1 + nSec2

else

nSobra := nSec2 - nSec1

endif

cH := Alltrim(str( nDias*24+int(nSobra/3600) ) )

cM := StrZero( int( nSobra%3600/60 ), 2 )

cS := StrZero( int( nSobra%3600%60 ), 2 )

Return cH+":"+cM+":"+cS

//--------------------------------------------------------------

Function Segundos( cHora )

Return ( Val(Left(cHora, 2))*3600 + Val(SubStr(cHora, 4,2))*60 + Val(Right(cHora,2)) )

**********************************************************

id=code>id=code>

"Eu creio, que de algum modo, que seje relativo em demasia a subjetiva constitucional perante tecnicamente aos que assim ditam o descritivo em si, no parágrafo subconsequente do subconciente doutrinários."

Link to comment
Share on other sites

citação:/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/


id=quote>id=quote>

2 segundos para revisar o programa, ótima marca. icon_smile_big.gif

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Só agora fui precisar icon_smile.gif

citação:

Semana que vem este tópico faz 10 anos... rs

abraços

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ


id=quote>id=quote>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

citação:

citação:/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/


id=quote>id=quote>

2 segundos para revisar o programa, ótima marca. icon_smile_big.gif

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO


id=quote>id=quote>

Significa que não houve revisão, funcionou de prima icon_smile_big.gif, porém já terá alguma mudança hoje icon_smile_wink.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

citação:

citação:

citação:/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/


id=quote>id=quote>

2 segundos para revisar o programa, ótima marca. icon_smile_big.gif

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO


id=quote>id=quote>

Significa que não houve revisão, funcionou de prima icon_smile_big.gif, porém já terá alguma mudança hoje icon_smile_wink.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"


id=quote>id=quote>

Então não funcionou de "prima".... kkkkkkkkkkkkk

João Santos - São Paulo.

joao@pleno.com.br

Fone: (11) 3106-2832 / 5150-7341 - TIM

https://www.facebook.com/kapiaba

FWH 2.7 - xHARBOUR WorkShop.Exe

Link to comment
Share on other sites

citação:

citação:

citação:

citação:/*********************************************************

* Função : DateDiff() - Função para Hora de entre duas datas

* Data : 19/06/2012 - 16:41:46 Por : Vagner

* Revisado em : 19/06/2012 - 16:41:48 Por : Vagner

* Parâmetros :

* cData1 - Primeira Data Formato DD/MM/AAAA HH:MM:SS

* cData2 - Segunda Data Formato DD/MM/AAAA HH:MM:SS (Default DateTime())

**********************************************************/


id=quote>id=quote>

2 segundos para revisar o programa, ótima marca. icon_smile_big.gif

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO


id=quote>id=quote>

Significa que não houve revisão, funcionou de prima icon_smile_big.gif, porém já terá alguma mudança hoje icon_smile_wink.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"


id=quote>id=quote>

Então não funcionou de "prima".... kkkkkkkkkkkkk

João Santos - São Paulo.

joao@pleno.com.br

Fone: (11) 3106-2832 / 5150-7341 - TIM

https://www.facebook.com/kapiaba

FWH 2.7 - xHARBOUR WorkShop.Exe


id=quote>id=quote>

Melhoria não significa que não tenha funcionado hehehehehe

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

Olá,

Houve uma alteração no código, eu havia testado somente com 2º horario maior que o primeiro, já corrigido

basta trocar


cHora := AllTrim(Str(Val(StrZero(Int(Mod((nTemp/3600),24)),2,0))+(nDias*24)))

id=code>id=code>

por


cHora := AllTrim(Str(Int(Mod((nTemp/3600),24))+( Iif(nDias > 0,(nDias-Iif(nTemp < 0,1,0)),0) *24)))

id=code>id=code>

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...