Ir para conteúdo

POWERED BY:

Arquivado

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

igadino

Subtração de data de nascimento

Recommended Posts

Pessoal estou necessitando de ajuda

 

1º eu quero subtrair uma data de nascimento

 

se alguém nasceu em:

15/02/1988

vou subtrair pela a data atual

eu tenho que saber a quantidade de anos mes e dias

 

guero que aparece assim na tela

 

exe: 17 anos 05 mes e 03 dias

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utiliza a função dateDiff.

 

Ex. Response.Write dateDiff("d", Now, "10-12-1980")

 

yyyy -> Ano

q -> Quarto

m -> Mês

y -> Dia do Ano

d -> Dia

w -> Dia da semana

ww -> Semana do ano

h -> Hora

n -> Minuto

s -> Segundo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o erro?

 

Você observou que terá que utilizar a função 3 vezes? Uma para dia, uma para mes e uma para ano?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talves não estou sabendo faze porque comecei trabaçhar com asp a pouco

 

É possivel voce montar este exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

 

<%
data = date
data = split(data,"/")
dia = data(0)
mes = data(1)
ano = data(2)

data2 = "15/02/1988"
data2 = split(data2,"/")
dia2 = data2(0)
mes2 = data2(1)
ano2 = data2(2)

dia3 = cint(dia) - cint(dia2)
mes3 = cint(mes) - cint(mes2)
ano3 = cint(ano) - cint(ano2)
data3 = dia3&"/"&mes3&"/"&ano3

data_final = cdate(data3)

response.write data_final
%>

Espero que ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se esta dando erro coloque o erros aqui, não faz muito tempo também passei por problemas com datas.

De onde esta data vem? se for de DB certifique-se que vem algum coisa, o meu erro foi esse: as vezes não tinha data e dava erro, demorei 1 dia pra perceber isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente não foi tão simples como sugeri. Segue abaixo uma função que criei. Faça todos os testes possíveis, pois não testei todas as possibilidades.

 

<%
Function intervaloDtPorExtenso(byVal dtInicial, byVal dtFinal)
	Dim dtBase, anos, meses, dias
	Dim anoTxt, mesTxt, diaTxt

	dias = dateDiff("d", dtInicial, dtFinal)
	meses = 0
	anos = 0
	If (dias < 0) Then
		dias = dias * -1
		dtBase = dtInicial
		dtInicial = dtFinal
		dtFinal = dtBase
	End If

	meses = dateDiff("m", dtInicial, dtFinal)
	anos = dateDiff("yyyy", dtInicial, dtFinal)

	dtBase = dateAdd("yyyy", anos, dtInicial)

	If (meses > 12) Then		
		meses = dateDiff("m", dtBase, dtFinal)

		If (meses < 0) Then
			meses = meses * -1
		End If
	ElseIf (meses = 12) Then
		meses = 0
	End If

	If (dias > 31) Then
		dias = dateDiff("d", dtBase, dtFinal)
		If (dias < 0) Then
			dias = dias * -1
		End If
	End If

	anoTxt = "ano"
	mesTxt = "mês"
	diaTxt = "dia"

	If (anos > 1) Then : anoTxt = "anos" : End If
	If (mes > 1) Then : mesTxt = "meses" : End If
	If (dias > 1) Then : diaTxt = "dias" : End If

	intervaloDtPorExtenso = anos & " " & anoTxt & " " & meses & " " & mesTxt & " " & dias & " " & diaTxt
End Function

dataInicial = "1/2/2005"
dataFinal = Date

Response.Write intervaloDtPorExtenso(dataInicial, dataFinal)
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha esta funçao:

 

<%
'Função que vai calcular a idade
function idade(datanascimento)
	ano_atual=year(date())'Extrai ano do atual
	mes_atual=month(date())'Extrai mes atual
	ano_niver=year(datanascimento)'Extrai ano do nascimento
	mes_niver=month(datanascimento)'Extrai mês do nascimento
	dif_ano=cint(ano_atual)-cint(ano_niver)'Faz a diferença dos anos
	dif_mes=cint(mes_atual)-cint(mes_niver)'Faz a diferença dos meses
	'Verifica se a diferença dos meses é negativa, 
	'se for e pq ainda não fez aniversário
	if (dif_mes<0) then
		idade=cint(dif_ano)-1
	else
		idade=dif_ano
	end if
end function

'Chama a função, enviando a data de nascimento.
'Então é retornado a idade
Response.Write(idade(cdate("11/4/1976")))
%>

ela exibe os anos, porem , você pode adaptar para exibir o mes,ano e dia

<% Response.Write(UCase(Left(WeekDayName(WeekDay(Now)),1)) + Right(WeekDayName(WeekDay(Now)),Len(WeekDayName(WeekDay(Now))) - 1) &", "& Day(Date)&" de "&MonthName(Month(Now))&" de "&Year(Date)) %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha cara eu fiz essa telinha aqui, ve se te ajuda, ela te da os anos, meses e dias que você "viveu" até agora com uma pequena margem de erro:

 

<%
if request.form("vai") = "sim" then
data1 = request.form("data")
data1 = cdate(data1)

dias = DateDiff("d",data1,date)
meses = DateDiff("m",data1,date)
anos = DateDiff("yyyy",data1,date)

p_anos = cint(left(dias/365,instr(dias/365&",0",",")-1))
p_meses = meses - p_anos*12
p_dias = dias - ((p_anos*365) + (p_meses * 30))
if p_dias < 0 then
p_dias = p_dias*-1
end if

%>

Você está vivo há aproximadamente <%=p_anos%> ano(s), <%=p_meses%> mês(es) e <%=p_dias%> dia(s)!!!
<%else%>
<html>
<body>
<form action="17.asp" method="POST">
Sua Data de Nascimento: <input type="text" name="data" value="dd/mm/aaaa" onfocus="this.value='';" onblur="if (this.value == '') {this.value='dd/mm/aaaa';}"> <input type="submit" value=" :: Testar :: ">
<input type="hidden" name="vai" value="sim">
</form>
</body>
</html>
<%end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha cara eu fiz essa telinha aqui, ve se te ajuda, ela te da os anos, meses e dias que você "viveu" até agora com uma pequena margem de erro:

A pequena margem de erro é pq você perde alguns dias e talvez até meses por não calcular ano bissexto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como nao estou com servidor ASP fiz aqui rapidinho no ACCESS algo

 

Tentei mudar para ASP veja se vai (Na verdade so mudei o msgbox para response.write)

 

Acho que funciona

 

Teste ai ta grande pois deixei bem explicado

 

O teste que ta la é minha data de aniversario com ela deu certo

 

Se funcionar posto no laboratorio

 

 

Sub Tempo(Valor)
Data = CDate(Valor)
Anos = DateDiff("yyyy", Data, Now)
If Date < CDate(Day(Data) & "/" & Month(Data) & "/" & Year(Now)) Then
   Anos = Anos - 1
End If
Meses = DateDiff("m", Data, Now)
If Date >= CDate("1/" & Month(Now) & "/" & Year(Now)) And Date < CDate(Day(Data) & "/" & Month(Now) & "/" & Year(Now)) Then
   Meses = Meses - 1
End If
While Meses >= 12
   Meses = Meses - 12
Wend

Dias = Day(Now) - Day(Data)
If Dias < 0 Then
   Dias = Dias + Day(DateAdd("d", -1, "01/" & Month(Now) & "/" & Year(Now)))
End If

TEXTO = ""

If Anos > 0 Then
   TEXTO = TEXTO & Anos & "Ano(s)"
End If

If Anos > 0 And (Meses > 0 Or Dias > 0) Then
   TEXTO = TEXTO & " e "
End If

If Meses > 0 Then
   TEXTO = TEXTO & Meses & "Mes(es)"
End If

If (Anos > 0 Or Meses > 0) And Dias > 0 Then
   TEXTO = TEXTO & " e "
End If

If Dias > 0 Then
   TEXTO = TEXTO & Dias & "Dia(s)"
End If

Response.Write(TEXTO)

End Sub

Para chamar

 

Call Tempo("11/10/1981")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Tiozinho. Testado e aprovado.

 

Ficou melhor que o meu... hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou postar no laboratorio entao

 

pode ajudar mais alguem

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.