Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davisvasconcellos

[Resolvido] Capturar parte de uma string

Recommended Posts

Galera. se alguem puder ajudar...

 

fiz essa function para somar as horas corridas maiores q 24:00 pois dava maior doideira nos cálculos. tipo 20:00+20:00 tinha q ser 40:00 e me retornava 1/30/198... . bem

 

eu comentei tudo pra ficar fácil de entender. mas como ta tarde to sem ideia pra tirar um problema q aparece quando chego na casa das centenas quando uso a função num loop inclrementando as horas salvas em um bd.

 

a minha pergunta é:

tem como eu capturar parte da string independente do número de casas tipo 120:00 (capturar 120) 12345:00 (capturar 12345)....

tipo dos ":" pra Esquerda

 

se puderem ajudar.. de qq forma vou continuar catando pq ja ví isso em algum lugar.

 

segue o código

<%


function HorasCorridas(hora1,hora2)
'pegar somente os caracteres de hora das strings e converter para inteiro
IntHora1=int(mid(hora1,1,2))
IntHora2=int(mid(hora2,1,2))


'pegar somente os caracteres de minutos das strings e converter para inteiro
Intminuto1=int(mid(hora1,4,2))
Intminuto2=int(mid(hora2,4,2))


'soma os valores inteiros das horas
somaHoras=(IntHora1+IntHora2)


'soma os valores inteiros dos minutos
somaMinutos=(IntMinuto1+IntMinuto2)

'converter as horas e mminutos e somar com o somatorio dos minutos
somaMinutos=somaMinutos+(somaHoras*60)

'obter a quantidade de horas correspondente sem os minutos
novaHora=int(SomaMinutos/60)

'adicionar Zeros caso a horas seja monor que 10
if len(novaHora)=1 then
novahora=0&novaHora
end if


'obter os minutos correspontende com o resto
novoMinuto=(SomaMinutos mod 60)

'adicionar Zeros caso os minutos sejam menores que 10
if len(novominuto)=1 then
novoMinuto=0&novominuto
end if

HorasTotais=novaHora&":"&novoMinuto
horasCorridas=horasTotais
end function

'teste
somatorio="10:00:00"
for i=1 to 6 '(se trocar or 5 funfa na boa pq nao passa da casa das centenas) 
somatorio=horasCorridas("20:00:00",somatorio)
response.write somatorio & "<br>"

next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é possível. Você irá usar a função Left e a função InStr em conjunto. A função Left retorna parte de uma string a partir de um numero de caracteres informados. A função InStr retorna a posição de um determinado caractere (ou do 1º caractere de uma string) em outra string caso exista.

Basicamente:

Left(texto,(InStr(texto,caractere)-1))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Kra. fiz a alteração q você sugeriu. mas o erro aparece agora na casa dos milhares.

 

tipo eu tenho uma string XXXXXX:YY:ZZ tenho que capturar tudo q vier antes dos primeiros dois pontos no caso XXXXX(que varia de tamanho de acord ocom o resultado da soma) e tb tenho que capturar os dois caracteres depois do :ZZ no caso YY

prestando bem a atenção agora to reparando que são o 4 e o 5 caracteres da direita pra esquerda.isso acho que não muda.

ta ai o q eu alterei

 

<%

function HorasCorridas(hora1,hora2)
'pegar somente os caracteres de hora das strings e converter para inteiro

IntHora1=int(Left(hora1,(InStr(hora1,":")-1)))
IntHora2=int(Left(hora2,(InStr(hora2,":")-1)))


'pegar somente os caracteres de minutos das strings e converter para inteiro

Intminuto1=int(right(hora1,(InStr(hora1,":")-2)))
Intminuto2=int(right(hora2,(InStr(hora2,":")-2)))


'soma os valores inteiros das horas
somaHoras=(IntHora1+IntHora2)


'soma os valores inteiros dos minutos
somaMinutos=(IntMinuto1+IntMinuto2)

'converter as horas e mminutos e somar com o somatorio dos minutos
somaMinutos=somaMinutos+(somaHoras*60)

'obter a quantidade de horas correspondente sem os minutos
novaHora=int(SomaMinutos/60)

'adicionar Zeros caso a horas seja monor que 10
if len(novaHora)=1 then
novahora=0&novaHora
end if


'obter os minutos correspontende com o resto
novoMinuto=(SomaMinutos mod 60)

'adicionar Zeros caso os minutos sejam menores que 10
if len(novominuto)=1 then
novoMinuto=0&novominuto
end if

HorasTotais=novaHora&":"&novoMinuto

horasCorridas=horasTotais
end function

somatorio="10:00:00"
for i=1 to 50 ' até 50 vai, masi que isso passa dos 1000 e buga
somatorio=horasCorridas("20:00:00",somatorio)
response.write somatorio & "<br>"

next
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só complementando... eu havia criado uma função para somar e subtrair horários. Está no laboratório de scripts.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.