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/

Comentários

Postagens mais visitadas deste blog

E Esse Tal de Nano Service?

Executar Audio em Java Swing

Validando Email em Java Com e Sem expressão Regular