Primeiro e último dia de uma data

25 respostas
U

Galera… tenho um objeto do tipo Date.

Gostaria de saber como faço pra setar este objeto para o primeiro ou último dia do mês.

Ex:
08/04/2005 tem que se transformar em 30/04/2005
08/04/2005 tem que se transformar em 01/04/2005

:wink: :wink:

25 Respostas

R

Use a classe GregorianCalendar:

import java.util.*;
...

// Meses vao de 0 a 11.. Logo, abril eh 3
Calendar c = new GregorianCalendar(2004, 3, 8);

System.out.println("Primeiro dia do mes: " + c.getMinimum(DAY_OF_MONTH));
System.out.println("Ultimo dia do mes: " + c.getMaxium(DAY_OF_MONTH));

Para a relacao completa de valores possiveis e metodos, veja o javadoc:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html

Rafael

I

Demorei mais achei....

import java.util.*;

Calendar cal = new GregorianCalendar(2005, 3, 8);
 
cal.getMinimum(DAY_OF_MONTH); //Retorna o primeiro dia
cal.getMaximum(DAY_OF_MONTH)); //Retorna o último dia

Lembre-se que os meses começam pelo 0, entaum Janeiro = 0.. Abril = 3..Dezembro = 11

flw cara.

U

Rafael Steil:
Use a classe GregorianCalendar:

import java.util.*;
...

// Meses vao de 0 a 11.. Logo, abril eh 3
Calendar c = new GregorianCalendar(2004, 3, 8);

System.out.println("Primeiro dia do mes: " + c.getMinimum(DAY_OF_MONTH));
System.out.println("Ultimo dia do mes: " + c.getMaxium(DAY_OF_MONTH));

Para a relacao completa de valores possiveis e metodos, veja o javadoc:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html

Rafael

[color=blue]Tá dando “pau” … sou novato em java :cry: [/color]

I

tah errado um ali

tah assim c.getMaxium é assim c.getMaximum

System.out.println("Ultimo dia do mes: " + c.getMaximum(DAY_OF_MONTH));

U

israelwm:
tah errado um ali

tah assim c.getMaxium é assim c.getMaximum

System.out.println("Ultimo dia do mes: " + c.getMaximum(DAY_OF_MONTH));

Também dá pau… eu já tinha notado este erro…

eu sou novato em java, mas né assim naum:

c.getMaxium(GregorianCalendar.DAY_OF_MONTH);

Mas desse jeito de cima também da erro… NÃO SEI MAIS O Q FAÇO

I

coloca todo teu código aki.

U

Pessoal, fiz assim, para o exemplo do mês atual ser fevereiro:

Calendar cal = new GregorianCalendar(); Date agora; cal.setTime(agora); out.print(cal.getMinimum(GregorianCalendar.DAY_OF_MONTH)); // Retorna 1 - Tá correto out.print(cal.getMaximum(GregorianCalendar.DAY_OF_MONTH)); // retorna 31 - Tá errado, pois fevereiro tem q retornar 28

R

O setTime() ta errado. Vc tem que iniciar a instancia “agora”, senao nenhuma data eh setada. De qualquer maneira

Date agora = new Date()

vai retornar a data atual. Para forcar o mes para fevereiro, passe a data no construtor, como mostrado nos exemplos:

// Inicia o calendario para 3/02/2005
Calendar cal = new GregorianCalendar(2005, 1, 3);

Rafael

U

Galera… desculpa incomodar vcs aew, mas meu código completa segue abaixo e continua errado. Se fosse em delphi, eu fazia isso em um piscar de olhos… … :cry:

DataHoraBoleto teste = new DataHoraBoleto(); Calendar cal = new GregorianCalendar(2005, 1, 3); Date agora = new Date(); out.print(cal.getMinimum(GregorianCalendar.DAY_OF_MONTH)); // Saí 1 - Tá correto out.print(cal.getMaximum(GregorianCalendar.DAY_OF_MONTH)); // Saí 31 - Tá errado. era pra sair 28

:arrow: E agora?

W

eu acho q vc ta esquecendo de importar a classe…

logo no inicio do seu arquivo coloque:

import java.util.*;

c vc n colocar isso n vai funciona nunca, v c eh isso ai :wink:

R

Cara, os exemplos estao errados. Voce tem que usar na verdade o getActualMinimum() e getActualMaximum(). O teu codigo fica assim:

Calendar cal = new GregorianCalendar(2005, 1, 3); out.print(cal.getActualMinimum(Calendar.DAY_OF_MONTH)); out.print(cal.getActualMaximum(Calendar.DAY_OF_MONTH));

Rafael

R

Tenta isso, com certeza vai funcionar …

/**
 * @return último dia do mês atual
 */
public int ultimoDiaMesAtual(){
	GregorianCalendar cal = new GregorianCalendar();
	cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
	int ultimoDia = cal.get(Calendar.DAY_OF_MONTH);
	return ultimoDia;
}
[color=blue] [/color]
E

se vc quer pegar o primeiro e o ultimo dia do mes corrente vc faz assim :

import java.util.Calendar;
import java.util.GregorianCalendar;
.
.
.

		 Calendar c = new GregorianCalendar();
		 System.out.println("Primeiro dia do mes: " + c.getActualMinimum(Calendar.DAY_OF_MONTH));
		 System.out.println("Ultimo dia do mes: " + c.getActualMaximum(Calendar.DAY_OF_MONTH));
K

Não era pra retornar da data completa ao inves de só apenas primeiro e último dia do mês?

D

Cara, por que reviver tópicos antigos?
Prestou atenção? Este é de 2005 e a última resposta, antes da tua, é de 2008…

K

Se for o caso de retornar o primeiro e último dia, mas com a data completa, um jeito é fazer assim:

//instancia um Calendar com a data atual. Hoje, por exemplo, retornaria 31/10/2012, no formato Calendar, claro. Calendar cal = Calendar.getInstance(); //Já que eu já tenho a data atual e quero pegar o menor e maior dia, vou manipular apenas o dia da instância gerada. cal.set(Calencar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); //Imprime a data formatada para dd/mm/aaaa System.out.println (new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()));

Para pegar a data final, é só substituir o getActualMinimum por getActualMaximum.

K

Cara, por que reviver tópicos antigos?
Prestou atenção? Este é de 2005 e a última resposta, antes da tua, é de 2008…

Cara… pq, para o meu entendimento, a pergunta não foi respondida.
Se alguem estivesse procurando uma maneira de pegar a data completa, iria ter que abrir outro tópico. =P

D

Cara, por que reviver tópicos antigos?
Prestou atenção? Este é de 2005 e a última resposta, antes da tua, é de 2008…

Cara… pq, para o meu entendimento, a pergunta não foi respondida.
Se alguem estivesse procurando uma maneira de pegar a data completa, iria ter que abrir outro tópico. =P
Melhor abrir um novo tópico que ficar respondendo coisas extremamente antigas.
Ou vai responder a todos os tópicos que não possuem um [RESOLVIDO], independente de quando foram abertos?

K

Cara.
Relaxa. Eu encontrei isso ao acaso e achei que seria interessante deixar uma solução.
Simples assim.

D

Kura:
Cara.
Relaxa. Eu encontrei isso ao acaso e achei que seria interessante deixa uma solução.
Simples assim.

Cara, valeu. É broxante quando está procurando algo, chega no final e vê que não foi resolvido. Mesmo sendo antigo, agora quem procurar não vai precisar chegar no final do tópico, ver que não foi resolvido, e abrir outro e esperar que respondam.

K

drrockenbach:
Kura:
Cara.
Relaxa. Eu encontrei isso ao acaso e achei que seria interessante deixa uma solução.
Simples assim.

Cara, valeu. É broxante quando está procurando algo, chega no final e vê que não foi resolvido. Mesmo sendo antigo, agora quem procurar não vai precisar chegar no final do tópico, ver que não foi resolvido, e abrir outro e esperar que respondam.

Caramba. Obrigado. Vc estava com essa duvida?
Abs

D

Kura:
drrockenbach:
Kura:
Cara.
Relaxa. Eu encontrei isso ao acaso e achei que seria interessante deixa uma solução.
Simples assim.

Cara, valeu. É broxante quando está procurando algo, chega no final e vê que não foi resolvido. Mesmo sendo antigo, agora quem procurar não vai precisar chegar no final do tópico, ver que não foi resolvido, e abrir outro e esperar que respondam.

Caramba. Obrigado. Vc estava com essa duvida?
Abs


Sim. Consegui resolver com a sua resposta.
Obrigado.

K

Caraaca.
Maneiro! Fico mt feliz em saber.
Obrigado pelo feedback :smiley:

K

ops. msg acidental.

D

Kura:
Caraaca.
Maneiro! Fico mt feliz em saber.
Obrigado pelo feedback :smiley:

Olha só, utilizei o que tu postou para pegar a data com o último e primeiro dia, só que estou tendo o problema relatado no post abaixo. Se puder dar uma olhada e ver se pode me ajudar.

Obrigado.

Criado 8 de abril de 2005
Ultima resposta 16 de jan. de 2013
Respostas 25
Participantes 9