Intervalo Semanal

5 respostas
Claire

Oi gente,
To tentando fazer aqui um método pra me retornar o intervalo de uma semana, ou seja: o dia de hoje, e o dia da semana anterior. Exemplificando a data desta quinta (30/12/2004) e a data da quinta anterior (23/12/2004).
Estava fazendo cálculos numéricos e concatenando Strings… enfim, gambiarra.
Alguém pode me ajudar a fazer isso usando Calendar?
Desde já agradeço!
Beijos :wink:

5 Respostas

C

Tente dessa forma, talvez seja isso q vc esteja procurando:

GregorianCalendar gc = new GregorianCalendar(); //Retorna a data de hoje.

long seteDias = 24*60*60*1000*7; //Retorna 7 dias em millis
long dataAnterior = gc.getTime() - seteDias;

gc.setTimeInMillis(dataAnterior);

System.out.println(gc.getTime()); //retornara a data a 7 dias atras.

Abraço a todos!!!

Claire

Oi,
Retornou o seguinte erro:

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred between lines: 8 and 117 in the jsp file: /Graficos/GraProducao.jsp

Generated servlet error:
C:\jakarta-tomcat-4.0.6\work\Standalone\localhost\sigh\Graficos\GraProducao$jsp.java:102: Incompatible type for -. Can’t convert java.util.Date to long.
long dataAnterior = gc.getTime() - seteDias;
^

An error occurred between lines: 8 and 117 in the jsp file: /Graficos/GraProducao.jsp

Generated servlet error:
C:\jakarta-tomcat-4.0.6\work\Standalone\localhost\sigh\Graficos\GraProducao$jsp.java:104: No method matching setTimeInMillis(long) found in class java.util.GregorianCalendar.
gc.setTimeInMillis(dataAnterior);
^
2 errors

Ou seja, ele não consegue fazer a subtração por ser tipos diferentes…

C

Generated servlet error:
long dataAnterior = gc.getTime() - seteDias;

o erro foi que o metodo q eu te passei estava errado, quando fui atualizar minha internet caiu e so agora voltou…

em vez de usar gc.getTime(); use gc.getTimeInMillis();

dessa forma dará certo!!!

Abraço!!!

Claire

Agora estou tendo outro problema que não encontro o erro.
Coloquei o código exatamente como está o seu, o page import no java.util.* pois estou fazendo em jsp.... Ele diz não encontrar essa classe... o erro é o seguinte:

Apache Tomcat/4.0.6 - HTTP Status 500 - Internal Server Error

--------------------------------------------------------------------------------

type Exception report

message Internal Server Error

description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred between lines: 14 and 132 in the jsp file: /Graficos/GraProducao.jsp

Generated servlet error:
C:\jakarta-tomcat-4.0.6\work\Standalone\localhost\sigh\Graficos\GraProducao$jsp.java:118: No method matching getTimeInMillis() found in class java.util.GregorianCalendar.
                long dataAnterior = gc.getTimeInMillis();
                                                      ^


An error occurred between lines: 14 and 132 in the jsp file: /Graficos/GraProducao.jsp

Generated servlet error:
C:\jakarta-tomcat-4.0.6\work\Standalone\localhost\sigh\Graficos\GraProducao$jsp.java:122: No method matching setTimeInMillis(long) found in class java.util.GregorianCalendar.
                gc.setTimeInMillis(dataAnterior);
                                  ^
2 errors

Algo faltando?

C

Não estou conseguindo entender o porque de nao localizar a classe GregorianCalendar, mas de qq forma existe outra forma para fazer isto!

Vamos tentar assim:

private Calendar gc;

long seteDias = 24*60*60*1000*7;

gc = Calendar.getInstance();

long dataAnterior = gc.getTimeInMillis() - seteDias;

gc.setTimeInMillis(dataAnterior);

System.out.println(gc.getTime());

Aqui está funcionando perfeitamente os dois metodos q te passei, caso este também nao funcione teste o codigo fora da pagina jsp.

Abraço a todos!!!

Criado 30 de dezembro de 2004
Ultima resposta 30 de dez. de 2004
Respostas 5
Participantes 2