JSP - Comparação de Datas da URL e do Sistema não Batem

3 respostas
A

Bom dia,

Eu tenho um programa que tem deverificar que dia é hoje e ver que edição do jornal o usuário está vendo, para, se ele não estiver no dia atual, mostrar uma mensagem na tela dizendo que ele não está no dia atual. Para isso eu pego a data do sistema e a data que está na URL (a sintaxe da URL é sempre essa www.an.com.br/ano/mes/dia/arquivo.jsp, ou seja, www.an.com.br/2007/mai/17/Default.jsp) e comparo as duas, porém diz que as datas são diferentes e mostra a mensagem. Aí eu peguei a variável que pega a data da URL e coloquei a data de hoje e daí funcionou (não mostrou a mensagem), acho que na hora que ele pega a data da URL ele pega alguma outra coisa ou pega errado, sei lá. Mas o engraçado é que estou mostrando na tela as datas do sistema e da URL e elas são iguais! Alguém sabe o que pode estar acontencendo?

Para melhor entendimento, segue abaixo o código:

<%@ page import=“java.util.Calendar” %>

<%

StringBuffer urlBuffer;

String urlString = “”, diaUrl = “”, mesUrl = “”, anoUrl = “”, locall = “”, diaa = “”, mess = “”, anoo = “”;

int veriff = 0, y = 0, diaNumero = 0, mesNumero  = 0, anoNumero = 0;

char x = 0;

urlBuffer = request.getRequestURL();
urlString = urlBuffer.toString();

for (y = urlString.length() - 5; y > 0; y–)

{

x = urlString.charAt(y);
if (x == / && veriff == 3)

{

locall = urlString.substring(y - 4, y);

veriff = 4;

}
if (x == / && veriff == 2)

{

anoUrl = urlString.substring(y - 4, y);

veriff = 3;

}
if (x == / && veriff == 1)

{

mesUrl = urlString.substring(y - 3, y);

veriff = 2;

}
if (x == / && veriff == 0)

{

diaUrl = urlString.substring(y - 2, y);

veriff = 1;

}

}

Calendar calendarioo = Calendar.getInstance();

diaNumero = calendarioo.get(Calendar.DAY_OF_MONTH);

mesNumero = calendarioo.get(Calendar.MONTH);

anoNumero = calendarioo.get(Calendar.YEAR);
diaa = String.valueOf(diaNumero);

mess = String.valueOf(mesNumero);

anoo = String.valueOf(anoNumero);
if (mesNumero == 0)

mess = jan;

else if (mesNumero == 1)

mess = fev;

else if (mesNumero == 2)

mess = mar;

else if (mesNumero == 3)

mess = abr;

else if (mesNumero == 4)

mess = mai;

else if (mesNumero == 5)

mess = jun;

else if (mesNumero == 6)

mess = jul;

else if (mesNumero == 7)

mess = ago;

else if (mesNumero == 8)

mess = set;

else if (mesNumero == 9)

mess = out;

else if (mesNumero == 10)

mess = nov;

else if (mesNumero == 11)

mess = dez;
if (diaUrl != diaa || mesUrl != mess || anoUrl != anoo)

{

%>
Atenção!
Você não está na edição do dia atual.
Deseja voltar ao >dia atual?
<%= diaa %>
<%= mess %>
<%= anoo %>
<%= diaUrl %>
<%= mesUrl %>
<%= anoUrl %>
<% } %>

Obrigada desde já,
Aline

3 Respostas

nadilsons

Olá,

O jsp retorna a hora do servidor (jah que ele vira uma servlet que roda no servidor)… e nao da maquina local…

Espero ter ajudado…

Nadilson

A

Sim, isso eu sei, mas se tu ler novamente meu post tu vai entender o que eu estou falando. Tipo assim, a data do sistema atual agora é 18 de maio de 2007 e estou comparando um endereço que tem essa data igualzinha.

Se tu rodar o programa tu vai entender melhor. Mas vou explicar novamente caso não tenha ficado claro: tenho a data do sistema que está ajustada com a data atual certinho, e quando meu usuário estiver no site vendo uma edição que não seja a do dia atual vai mostrar uma mensagem avisando que ele não está no dia atual.

Os dados que eu estou pegando do sistema: dia, mês e ano.
Dados que estou pegando da URL: dia, mês e ano.

Nos meus testes com esse programa, estou sempre trabalhando com a edição do dia atual para verificar se o programa está funcionando, então hoje o meu dia, meu mês e meu ano no sistema é 18, mai e 2007. Na URL também. Como é que na comparação mostra que eles não saõ iguais?

gomesrod

Repare que existe um erro na condição do “IF”: A página faz uma comparação usando sinal de desigualdade (!=) entre String e int.

Faça um teste convertendo os dados para um mesmo tipo antes de efetuar a comparação, utilizando o método adequado para comparação desse tipo.

Criado 17 de maio de 2007
Ultima resposta 21 de mai. de 2007
Respostas 3
Participantes 3