Problemas ao retornar um objeto do tipo Calendar!

5 respostas
andersonrc

Olá pessoal,

tô com o seguinte problema: tenho uma classe que recebe uma data no formato string e o método converte para Calendar. Mas para imprimir a data vem mal formatada.

Essa é a saída Data convertida: java.util.GregorianCalendar[time=1352599200000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“America/Sao_Paulo”,offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2012,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=2,DAY_OF_MONTH=11,DAY_OF_YEAR=316,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=3600000]

Segue o código

package com.conversor;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class ConverterData {
	
	public Calendar formatarData(String data) {

		if (data == null || data.equals(""))
			return null;

		Calendar dataReserva = null;

		try{
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			dataReserva = Calendar.getInstance();
			dataReserva.setTime(sdf.parse(data));
		}catch(ParseException e) {
			System.out.println("Erro: " + e);
		}

		return dataReserva;

	}

	public static void main(String[] args) throws Exception {

		Scanner scanner = new Scanner(System.in);
		String dataString;

		System.out.println("Digite a data no formato: (dd/MM/yyyy)");
		dataString = scanner.nextLine();

		System.out.println("\nData convertida: " + new ConverterData().formatarData(dataString));

	}

}

5 Respostas

nel

Bom dia.

O que há de errado?!
A realidade é que deu um System.out em um Calendar, como consequencia, imprimiu o que você apresentou.
Terás de converter a uma nova String no formato desejado, caso queira apresentar a data no formato desejado.

Abraços.

andersonrc

Olá nel

então eu tenho que fazer uma nova conversão para exibir no formato String?

Essa saída da data tá muito confusa.

andersonrc

O que estou querendo é que a data seja exibida no formato dd//MM/yyyy

nel

Exato :!:

Você está dando um System.out em um Calendar.
Caso queira imprimir a data novamente, terás de formatar a mesma em uma String, antes de imprimi-la.

Mas sinceramente, como você não faz nenhum tipo de modifcação na data, simplesmente a transforme em um calendar, qual o objetivo em imprimi-la novamente?!
Abraços.

andersonrc

Ok nel, entendi.

Então é simples.

É que essa classe é para um sistema simples de faculdade, e o usuário vai digitar a data no formato string. Por se tratar de um sistema de reserva de hotel, o hóspede poderá requisitar a extensão da reserva. E como haverá necessidade de manipulação de datas, como imprimir, por exemplo, necessito dessas conversões.

Obrigado!

Criado 25 de abril de 2011
Ultima resposta 25 de abr. de 2011
Respostas 5
Participantes 2