Imprimir tabela com anos, meses e dias

13/12/2017

0

Bom dia, alguém pode me ajudar com isso.

Preciso imprimir uma tabela com o período a partir de duas datas informadas.

Por exemplo, se o usuário digitar 01/12/2017 e 31/01/2018, deverá aparecer assim.

Alguém pode postar algum exemplo de como fazer isso? Não é trabalho de escola, estou usando Calendar para fazer, mas não consigo criar essa tabela com os for.

Agradeço demais a ajuda.

Seria assim:

2017 2018
Dez Jan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Marcos

Marcos

Responder

Posts

13/12/2017

Marcos

Estou usando essa função para pegar os dias do período.

private List<Date> listaDias (Date dtIni, Date dtFim) {
List<Date> result = new ArrayList<Date>();
Calendar start = Calendar.getInstance();
start.setTime(dtIni);
Calendar end = Calendar.getInstance();
end.setTime(dtFim);
end.add(Calendar.DAY_OF_YEAR, 1); 
while (start.before(end)) {
    result.add(start.getTime());
    start.add(Calendar.DAY_OF_YEAR, 1);
}
return result;
}

Responder

13/12/2017

Juliano

Opa, dá uma olhada nesse código e vê se te ajuda.

public class Data {
	int dia;
	int mes;
	int ano;

	public Data(int dia, int mes, int ano) {
		this.dia = dia;
		this.mes = mes;
		this.ano = ano;
	}

	public boolean validaData() {

		if(ano >= 0) {

			if((mes >= 1) && (mes <=12)) {

				if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) {
					if (dia >= 1 && dia <= 31) {
						return true;
					}
					else {
						return false;
					}
				}
				else if(mes == 4 || mes == 6 || mes == 9 || mes == 11) {

					if (dia >= 1 && dia <= 30) {
						return true;
					}
					else {
						return false;
					}
				}
				else {
				//Mês de fevereiro
					if(ano % 4 != 0) { //Ano não é bissexto

						if(dia >= 1 && dia <= 28) {
							return true;
						} else {
							return false;
						}
					}
					else if(ano % 4 == 0) {//Ano pode ser bissexto

						if(ano % 100 != 0) { //Ano bissexto

							if(dia >= 1 && dia <= 29) {
								return true;
							}
							else {
								return false;
								}
						}
						else {

							if(ano % 400 == 0) {
								return true;
							}
							else {
								return false;
							}
						}
					}
				} 
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
		return true;
	}


	public void mostrarData() {
		if(validaData()) {
			System.out.println(this.dia+"/"+this.mes+"/"+this.ano);	
		}
		else {
			System.out.println("Data não é válida.");
		}
	}

	public static void main(String[] args) {

		Data data = new Data(30,2,2016);
		data.validaData();
		data.mostrarData();
	} 
}


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar