Primeiro e último dia de uma data

13 respostas
D

Olá, alguem de vcs tem alguma função pronta para pegar o primeiro ou o ultimo dia de uma data, pesquisei e so encontrei por GregorianCalendar, mas no J2me só tem o Calendar normal, e nao tem as funções para pegar o primeiro ou o ultimo dia do mês.

13 Respostas

M

eu nunca mexi com J2ME, mas com java se usando só calendar da pra fazer assim, ve se ajuda:

Calendar dataAtual = Calendar.getInstance();
		Calendar primeiroDia = Calendar.getInstance();
		Calendar ultimoDia = Calendar.getInstance();
		//1º dia do mês atual
		primeiroDia.add(Calendar.DAY_OF_MONTH, -dataAtual.get(Calendar.DAY_OF_MONTH));
		primeiroDia.add(Calendar.DAY_OF_YEAR, 1);
		System.out.println(primeiroDia.getTime());
		
		//Ultimo dia do mês atual
		ultimoDia.add(Calendar.MONTH, 1);
		ultimoDia.add(Calendar.DAY_OF_MONTH, -dataAtual.get(Calendar.DAY_OF_MONTH));
		System.out.println(ultimoDia.getTime());

[]'s

L

Não use GregorianCalendar, prefira usar o Calendar mesmo.

Pra pegar o primeiro dia do mês, é trivial, “sete” o dia para 1.

Calendar primeiroDia = Calendar.getInstance();
primeiroDia.set(Calendar.DAY_OF_MONTH, 1);

Pra pegar o último dia, vai um truque: avance um mês, “sete” o dia para 1, e diminua o dia para 1.

Calendar ultimoDia = Calendar.getInstance();
ultimoDia.add(Calendar.MONTH, 1);
ultimoDia.set(Calendar.DAY_OF_MONTH, 1);
ultimoDia.add(Calendar.DAY_OF_MONTH, -1);

Manipulação de datas em Java sofre com uma API mal escrita, não tem função pronta para obter primeiro e último dia com uma só função.

W

Calendar calendar = Calendar.getInstance(); int ultimoDiaMes = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

C

Corrigindo, a API já tem “Método” pronto…

Opção dois:

Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH,Calendar.FEBRUARY); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); System.out.println("Maior dia de Fevereiro:" + c.getActualMaximum(Calendar.DAY_OF_MONTH));

Veja a documentação da classe Calendar… assim como actualMaximum vc tambem tem o mínimo.

[]s

D

cristian_clever:
Corrigindo, a API já tem “Método” pronto…

Opção dois:

Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH,Calendar.FEBRUARY); DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); System.out.println("Maior dia de Fevereiro:" + c.getActualMaximum(Calendar.DAY_OF_MONTH));

Veja a documentação da classe Calendar… assim como actualMaximum vc tambem tem o mínimo.

[]s

Valeu Cristian… isso mesmo que eu precisava.
Realmente pega o ultimo dia do mes.

Valeu…Abracos

I

E quando eu quero o último dia do mês de uma data que eu tenho em String?

Achei os comandos:

Calendar c = Calendar.getInstance();
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
String dataux = "28/" + messp.getSelectedItem().toString() +
                        "/" + anosp.getSelectedItem().toString();
Date data1 = formato.parse(dataux);
int ultimo = c.getActualMaximum(data1);

Mas dá erro na última linha, mensagem “Unhandled exception type ParseException”, ou seja, não consigo converter uma data de uma string válida.

M

Na verdade essa linha significa “Ei, vc não tratou a exception ParseException”

Provavelmente na hora de gerar o try catch vc importou o ParseException errado. Da uma olhada nos imports, deveria ser java.text.ParseException.

I
Calendar c = Calendar.getInstance();  
c.set(Calendar.MONTH, messel);  
c.set(Calendar.YEAR, anosel);
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
String dataux = "28/" + messp.getSelectedItem().toString() +  
                        "/" + anosp.getSelectedItem().toString();  
Date data1 = formato.parse(dataux);  
int ultimo = Calculo.getActualMaximum(c.DAY_OF_MONTH);

Tentei de tudo na última linha, mas qualquer coisa que faço dá um erro diferente.
Como usar este getActualMaximum?
Desculpe, estou perdido, minhas pesquisas não me mostram o que fazer.

M

Esquece esse SimpleDateFormat. o código a seguir te dá o ultimo dia do mes atual:

Calendar calendar = Calendar.getInstance();  
int ultimoDiaMes = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
I

Mas eu não quero do mês atual, quero do mês escolhido pelo usuário, que pode ser de 2006 a 2013, o mês e o ano estão em Spinners.

M

Seta no calendar ué:

calendar.set(Calendar.MONTH, 3); // mes de abril
calendar.set(Calendar.YEAR, 2015); // ano de 2015
I

Perfeito !!! Eu tinha esquecido ainda que devo diminuir 1 no mês para fazer isto.

Só fico na dúvida se fazendo isto a data do sistema não muda.

Consigo executar o aplicativo no tablet Samsumg Galaxy Tab (aquele primeiro, com Android 2.3.3) mas não consigo configurar o SIII com Android 4.1.2 para executar nele, tem alguma dica? Desculpe estar fora do assunto.

M

Olha, não manjo nada de android, mas pra funcionar o S3 tem q estar em modo de desenvolvedor,e também tem algumas configurações sobre compatibilidade, mas fora isso não posso te ajduar, vc vai ter que postar uma nova pergunta, pra alguém que é especialista ver e te responder.

abraços

Criado 23 de setembro de 2009
Ultima resposta 17 de abr. de 2013
Respostas 13
Participantes 7