[RESOLVIDO] Problemas com JodaTime

3 respostas
C

Bom dia,

Nunca trabalhei muito com datas e horas, e sempre pensei que quando fosse começar… logo procuraria uma biblioteca que me facilitasse muito. Então optei pelo JodaTime 2.1, logo de cara…

Mas fazendo o primeiro teste, já encontrei uma dificuldade… Não sei se é eu que estou usando errado, ou é um calculo maio errado da biblioteca… de qualquer forma vou postas:

Essa é a função de calcular um período:

String dateStart = "06/05/2011";
		String dateStop = "07/04/2011";

		final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy");

		DateTime dt1 = format.parseDateTime(dateStart);
		DateTime dt2 = format.parseDateTime(dateStop);

		final Period period = new Period(dt1, dt2);

		System.out.println(period.getYears() + " anos");
		System.out.println(period.getMonths() + " meses");
		System.out.println(period.getDays() + " dias");

A saída disto é a seguinte:

se eu alterar as datas para:

a saída é a seguinte, que aliás está correta:

Alguém consegue me informar se estou fazendo algo errado, ou se eu não posso confiar nesta biblioteca?
e se por acaso tiver alguma recomendação de biblioteca, eu ficaria grato!

3 Respostas

C

Resolvi, na verdade prestei a atenção e descobri que ele conta as semanas também… resolvi do seguinte modo:

String dateStart = "06/05/2011";
		String dateStop = "03/04/2013";

		final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy");

		DateTime dt1 = format.parseDateTime(dateStart);
		DateTime dt2 = format.parseDateTime(dateStop);
		DateTime d3 = DateTime.now();

		final Period period = new Period(dt1, dt2);

		System.out.println(period.getYears() + " anos");
		System.out.println(period.getMonths() + " meses");
		System.out.println(period.getDays() + period.getWeeks() * 7 + " dias");

saida:

felipe_gdr

No primeiro exemplo a dataStop está anterior à dataStart. Está certo isso?

Minha opinião sobre o JodaTime é que é uma BAITA ferramenta para manipular datas em Java, inclusive conceitos do JodaTime foram incorporados no próprio java na futura versão 8 (http://www.infoq.com/news/2012/09/jsr310-java8).

Minha sugestão: não desista do JodaTime, aprenda a usá-lo.

Abs!!!

C

Estou vendo que ele é bom mesmo, o meu erro foi que ele contava as semanas também… e eu não vi isso… agora está tudo certo e estou vendo que ele funciona muito bem…
estou vendo formas de invertar para dd/MM para não complicar com os datepickers que vou usar na pagina…

Abraço!

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 3
Participantes 2