Data aniversário dia/mes

4 respostas
A

Oi pessoal, estou com uma base de dados que me passaram com os aniversários separados por dia(uma coluna) e mes(outra coluna), e preciso fazer a exibição dos aniversariantes no período do dia de hoje, de 2 dias pra frente.

Estou meio perdido aqui em como fazê-lo, caso fosse uma data composta eu apenas iria compara-la.
Pensei em utilizar o gregoriancalendar, mas não entendo ele muito bem. Acabei fazendo um scriplet aqui, se alguém puder me ajudar eu agradeceria:

<%
{
ResultSet rs = null;
int dia, mes, dia_2, mes_2, dia_3, mes_3;
String sql;
Calendar c = new GregorianCalendar();
	dia = c.get(Calendar.DAY_OF_MONTH);
	mes = c.get(Calendar.MONTH);
	mes++;
c.add(Calendar.DAY_OF_MONTH, 1);
	dia_2 = c.get(Calendar.DAY_OF_MONTH);
	mes_2 = c.get(Calendar.MONTH);
	mes_2++;
c.add(Calendar.DAY_OF_MONTH, 1);
	dia_3 = c.get(Calendar.DAY_OF_MONTH);
	mes_3 = c.get(Calendar.MONTH);a
	mes_3++;

sql = "SELECT Matricula, Nome_guerra, Ramal, Aniv_dia, Aniv_mes, Dependencia"
	+ " FROM db2func.funcionarios"
	+ " WHERE (((Aniv_mes = " + mes + ") AND (Aniv_dia = " + dia + "))"
	+ " OR ((Aniv_mes = " + mes_2 + ") AND (Aniv_dia = " + dia_2 + "))"
	+ " OR ((Aniv_mes = " + mes_3 + ") AND (Aniv_dia = " + dia_3 + ")))"
	+ " ORDER BY Aniv_mes, Aniv_dia, Nome_guerra";
rs = BD.recordSet(sql);

if (rs != null) { %>
<img src="/varejo/images/np_setaBranca.gif" border="0" /> <font class="topico">Feliz Aniversário</font>
<p>
<table width="100%" border="0">
<%
while (rs.next()) {
	if (rs.getString("Nome_guerra").trim() != "") {	%>				
		<tr> 
			<td width="20%" align="center">
			<%
			if (rs.getInt("Aniv_dia") == dia) { %>
				<b>Hoje</b>
			<%
			} else { %>
				<%= rs.getInt("Aniv_dia") + "/" + rs.getInt("Aniv_mes") %>
			<%
			} %>
			</td>
			<td width="80%">
			<a class="link" href="/varejo/administrativo/funcis/funcis_detalhe.jsp?matricula=<%= rs.getString("Matricula") %>"><%= rs.getString("Nome_guerra") %></a>
			<%
			String depe = rs.getString("Dependencia");
			if (depe.indexOf("-") != -1){
				if (!"DF".equals(depe.substring(depe.length() - 2))) { %>
					<%= "-" + depe.substring(depe.length() - 2) %>
			<%
				} 
			}else{
			%>
				<%= "-" + depe.substring(depe.length() - 3) %>
			<%
			}
			%>
			</td>
		</tr>
		<%
		}
	}
	rs.close(); %>				
</table>
</p> 
<br />
<%
}
} %>

4 Respostas

M

Sugiro você trabalhar com datas. Converte primeiro, depois você compara.

Segue uma funcão para conversão:

public Date converterStringToDate(String dia, String mes, String ano) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { return sdf.parse(dia + "/" mes + "/" ano); } catch (ParseException e) { e.printStackTrace(); return null; } }

A

não tem ano, somente dia e mês, estou pensando em colocar o ano corrente para que ele faça a comparação.

A
pronto, consegui aqui, era mais simples ainda:
public static void main(String[] args) {
		
		Date hoje = new Date();
		
		String formato = "dd/MM";
		SimpleDateFormat faz = new SimpleDateFormat(formato);
		
		Calendar cal = Calendar.getInstance();  
		cal.setTime(hoje);  
		cal.add(Calendar.DATE, 50); //teste com adição de 50 datas
		hoje = cal.getTime();  
		String fazHoje = faz.format(hoje);
		
		
		System.out.println(fazHoje);
	}
D
andre.froes:
pronto, consegui aqui, era mais simples ainda:
public static void main(String[] args) {
		
		Date hoje = new Date();
		
		String formato = "dd/MM";
		SimpleDateFormat faz = new SimpleDateFormat(formato);
		
		Calendar cal = Calendar.getInstance();  
		cal.setTime(hoje);  
		cal.add(Calendar.DATE, 50); //teste com adição de 50 datas
		hoje = cal.getTime();  
		String fazHoje = faz.format(hoje);
		
		
		System.out.println(fazHoje);
	}

Fio, nao esquece de editar o topico e colocar a tag [RESOLVIDO] :)

abraço

Criado 17 de novembro de 2009
Ultima resposta 17 de nov. de 2009
Respostas 4
Participantes 3