sexta-feira, 20 de fevereiro de 2015

Datas com java 8



Thu thu thu thu paaaa! Ordinária!!!!!!! 

E ai galera, hoje vamos falar um pouco mais sobre java 8. Neste, vamos conhecer como trabalhar com a nova API de datas (Manolo! ficou uma mão na rodis! :p).

Vamos lá!

O projeto foi baseado no projeto Joda Time, conta com uma interface fluente, além de ser totalmente imultável!
Para obter a data de hoje é simples assim:
1
LocalDate hoje = LocalDate.now();
A classe LocalDate representa uma data. Para representar datas com horários, ou um simples horário, usaremos as classes LocalDateTime e LocalTime.
1
2
LocalDateTime agora = LocalDateTime.now();
LocalTime horario = LocalTime.now();
Também podemos criar uma data específica utilizando o método estático of. Note que os meses na nova api vão de 1 (janeiro) a 12 (dezembro), diferente da classe Calendar que tratavam os meses de 0 a 11. Também é possível utilizar o enum Month para representar os meses, tornando o código ainda mais legível.
1
2
3
LocalDate natal = LocalDate.of(2014, 12, 25);
LocalDate natalMelhor = LocalDate.of(2014, Month.DECEMBER, 25);
LocalDate comStaticImport = LocalDate.of(2014, DECEMBER, 25);
Podemos de forma simples incrementar ou decrementar dias, meses, anos e semanas a partir de qualquer objeto do tipo LocalDate. Para isso podemos usar os métodos plusXX eminusXX.
1
2
3
LocalDate daqui15Dias = hoje.plusDays(15);
LocalDate haUmAnoAtras = hoje.minusYears(1);
LocalDate dataProximoEvento = LocalDate.now().plusWeeks(1);
Imagine que queremos saber em qual dia da semana foi o último natal. Com quantas linhas você faria isso com Calendar? :)
1
2
3
DayOfWeek diaUltimoNatal_ = hoje.minusYears(1)
    .withMonth(Month.DECEMBER.getValue()).withDayOfMonth(25)
    .getDayOfWeek();
Assim como ocorre com LocalDate e LocalTime, também temos uma classe para representar o dia da semana. Bem melhor que o int retornado pela API anterior.
Também podemos contar com métodos para intercalar datas com horários. Os métodos at são muito bons para isso.
1
LocalDateTime amanhaAs14 = hoje.plusDays(1).atTime(14, 00);
Podemos comparar datas com os métodos isAfterisBefore e isEqual. Que tal verificar se a data do próximo evento está no futuro.
1
boolean eventoNoFuturo = dataProximoEvento.isAfter(hoje);
Para formatar datas, não precisaremos mais de classes externas. Podemos usar o método format presente nas próprias classes. O método format retorna uma String.
1
2
3
4
5
String dataISO = hoje.format(DateTimeFormatter.ISO_DATE);
// 2014-05-31
 
String dataBR = hoje.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
// 31/05/2014
Espero que tenham gostado, é possível fazer várias coisas além deste exemplo. Até a próxima \0/

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.