JAVA 8
Java. Date, java.Calendar e java.Time
Manipulando Datas
Objetivos
1. Problemas existentes com as bibliotecas de data do Java;
2. Nova API para manipulação de datas no Java 8;
3. ...
API java.Date
 Desde janeiro de 1996
 Java 1.0
 Depreciada
 Mutabilidade
 Integração com JDBC
 Contém um instante no...
API java.Date
 Exemplos:
 Inconsistência:
Date date = new Date(2009, 2, 1);
//Criação de uma data cujo o ano será 3909
API java.Calendar
 Java 1.1
 Ainda Mutável
 Sem “Thread Safe”
 Não pode formatar datas diretamente
 Aritméticas de da...
API java.Calendar
 Exemplo:
 Inconsistência:
Calendar calendar = new GregorianCalendar(2014, 0, 20);
// Os meses variam ...
Exemplo - Mutabilidade
 java.Calendar:
Calendar data = new GregorianCalendar(2004, 2, 13);
cliente.setVencimento(data);
C...
Exemplo - Imutabilidade
 Classe String
String s = “java”;
s.toUpperCase(); // Letras maiúsculas
System.out.println(s);
Análise – Date e Calendar
 Inconsistência
 Mutabilidade
 Não-padronizável
 Não-formatável
 Mínima manipulação
Joda Time
 Desde 2002
 API Open Source
 Muito utilizada
 Soluciona várias deficiências das outras bibliotecas
 Imutab...
API java.Time
 Imutabilidade
 “Thread-Safe”
 Padronizada (ISO-8601)
 Novo conceito
 Data para computadores
• Continuo...
API java.Time
 Exemplo:
 Imutabilidade/Thread-Safe:
LocalDate hoje = LocalDate.now(); //2015-01-20
hoje.plusDays(1); // ...
Características java.Time
 Baseada em padrões
 ISO-8601
 Imutável
 LocalDate date = LocalDate.date(2009, 1, 1); // Cri...
Calendar versus Time
 Calendar
 Calendar mesQueVem = Calendar.getInstance();// Criando uma data
mesQueVem.add(Calendar.M...
Calendar versus Time
 Calendar
 Calendar instante = Calendar.getInstance();
instante.set(2015, Calendar.FEBRUARY, 30);
S...
Fim
Obrigado!
Java - Bibliotecas Date, Calendar e Time
Próximos SlideShares
Carregando em…5
×

Java - Bibliotecas Date, Calendar e Time

593 visualizações

Publicada em

Novidades do Java 8 no que diz respeito a manipulação de datas. Comparação entre as API's disponíveis para trabalhar com datas no Java.

Publicada em: Meio ambiente
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
593
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java - Bibliotecas Date, Calendar e Time

  1. 1. JAVA 8 Java. Date, java.Calendar e java.Time Manipulando Datas
  2. 2. Objetivos 1. Problemas existentes com as bibliotecas de data do Java; 2. Nova API para manipulação de datas no Java 8; 3. Códigos exemplificando.
  3. 3. API java.Date  Desde janeiro de 1996  Java 1.0  Depreciada  Mutabilidade  Integração com JDBC  Contém um instante no tempo (em ms)  Precisa implementar a lógica  Não possui operação de manipulação de datas  Sem Timezones (internacionalização)  Horário de Brasília ou de Nova York?  String com formato americano
  4. 4. API java.Date  Exemplos:  Inconsistência: Date date = new Date(2009, 2, 1); //Criação de uma data cujo o ano será 3909
  5. 5. API java.Calendar  Java 1.1  Ainda Mutável  Sem “Thread Safe”  Não pode formatar datas diretamente  Aritméticas de datas  Complicado, porém possível  Define localização (localTimeZone)  Algumas funções depreciadas
  6. 6. API java.Calendar  Exemplo:  Inconsistência: Calendar calendar = new GregorianCalendar(2014, 0, 20); // Os meses variam de 0-11 (Janeiro à Dezembro, respectivamente) //Criando uma data: 20/01/2014
  7. 7. Exemplo - Mutabilidade  java.Calendar: Calendar data = new GregorianCalendar(2004, 2, 13); cliente.setVencimento(data); Calendar doisDiasDepois = cliente.getVencimento(); doisDiasDepois.add(Calendar.DAY_OF_MONTH, 2); outroCliente.setVencimento(doisDiasDepois); // efeito colateral: System.out.println(cliente.getVencimento());
  8. 8. Exemplo - Imutabilidade  Classe String String s = “java”; s.toUpperCase(); // Letras maiúsculas System.out.println(s);
  9. 9. Análise – Date e Calendar  Inconsistência  Mutabilidade  Não-padronizável  Não-formatável  Mínima manipulação
  10. 10. Joda Time  Desde 2002  API Open Source  Muito utilizada  Soluciona várias deficiências das outras bibliotecas  Imutabilidade
  11. 11. API java.Time  Imutabilidade  “Thread-Safe”  Padronizada (ISO-8601)  Novo conceito  Data para computadores • Continuous  Data para humanos • Human  Tipos Específicos  LocalDateTime  LocalDate  LocalTime
  12. 12. API java.Time  Exemplo:  Imutabilidade/Thread-Safe: LocalDate hoje = LocalDate.now(); //2015-01-20 hoje.plusDays(1); // Tentando atribuir +1 ao dia System.out.println(hoje); //2015-01-20 (ainda é hoje, e não amanhã!) LocalDate hoje = LocalDate.now(); LocalDate amanha = hoje.plusDays(1); // somando 1 dia boolean mesmoObjeto = hoje == amanha; //false, já que é imutável
  13. 13. Características java.Time  Baseada em padrões  ISO-8601  Imutável  LocalDate date = LocalDate.date(2009, 1, 1); // Criando  date = date.withYear(2014); // Alterando com nova invocação  Interfaces Fluentes  date = date.withYear(2014).withMonthOfYear(1).withDayOfMonth(20); // Legibilidade  Clareza  date = date.withYear(2014).withMonthOfYear(1).withDayOfMonth(20);  date = date.minusYears(2); // Resulta em 2014-01-18  Extensível  Pontos de extensão
  14. 14. Calendar versus Time  Calendar  Calendar mesQueVem = Calendar.getInstance();// Criando uma data mesQueVem.add(Calendar.MONTH, 1); // Adicionando +1 ao mês  Time  LocalDate mesQueVem = LocalDate.now().plusMonths(1);
  15. 15. Calendar versus Time  Calendar  Calendar instante = Calendar.getInstance(); instante.set(2015, Calendar.FEBRUARY, 30); SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy"); System.out.println(dateFormat.format(instante.getTime()));  Saída: 02/03/15  Esperávamos um Exception.  Time  LocalDate.of(2015, Month.FEBRUARY, 30);  DateTimeException  java.time.DateTimeException: Invalid date 'FEBRUARY 30'
  16. 16. Fim Obrigado!

×