Primeiro e último dia de uma data

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:

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

1 curtida

Demorei mais achei…

[code]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[/code]

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

flw cara.

[quote=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[/quote]

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

tah errado um ali

tah assim c.getMaxium é assim c.getMaximum

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

[quote=israelwm]tah errado um ali

tah assim c.getMaxium é assim c.getMaximum

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

[/quote]

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

coloca todo teu código aki.

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

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

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?

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:

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

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]

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

[code]
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));  
	 
[/code]

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

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

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.

1 curtida

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

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

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

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[/quote]
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?

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

1 curtida