POO - 24 - Classes Básicas do Java - Datas

3.565 visualizações

Publicada em

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

Sem downloads
Visualizações
Visualizações totais
3.565
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

POO - 24 - Classes Básicas do Java - Datas

  1. 1. Fundamentos da Linguagem Java Classes Básicas da API do Java Datas e Strings Ludimila Monjardim Casagrande 2012
  2. 2. Manipulação de Datas
  3. 3. A Classe Abstrata: Calendar  A classe abstrata Calendar encapsula um momento no tempo representado em milissegundos. Também provê métodos para manipulação desse momento.  A subclasse concreta de Calendar mais usada é a GregorianCalendar, que representa o calendário usado pela maior parte dos países.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 3
  4. 4. A Classe Abstrata: Calendar  Para obter um Calendar que encapsula o instante atual (data e hora), usamos o método estático getInstance(): Calendar c = Calendar.getInstance(); System.out.println("Dia do Mês: " + c.get(Calendar.DAY_OF_MONTH)); System.out.println("Dia da Semana: " + c.get(Calendar.DAY_OF_WEEK)); Um possível resultado é: Dia do Mês: 11 Dia da Semana: 2 No exemplo acima, o dia da semana 2 representa a segunda-feira.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 4
  5. 5. A Classe Abstrata: Calendar  A classe Calendar numera os meses e os dias da semana da seguinte forma:  Os meses de janeiro (january) a dezembro (december) são numerados de 0 a 11.  Os dias da semana são numerados de 1 a 7, sendo o domingo (sunday) o primeiro dia.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 5
  6. 6. A Classe: GregorianCalendar  Principais construtores: GregorianCalendar() GregorianCalendar(int year, int month, int dayOfMonth) GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) Calendar c1 = new GregorianCalendar(2012, 4, 11); equivale aCalendar c2 = new GregorianCalendar(2012, Calendar.MAY, 11);Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 6
  7. 7. A Classe: Date  Recomenda-se evitar o uso da classe Date porque a maior parte de seus métodos estão marcados como deprecated, porém, ela ainda tem amplo uso legado nas bibliotecas do Java. Ela foi substituída no Java 1.1 pelo Calendar, para haver suporte correto à internacionalização do sistema de datas.  Você pode pegar um Date de um Calendar e vice-versa através dos getters e setters de time: Calendar c = new GregorianCalendar(2005, Calendar.OCTOBER, 12); Date d = c.getTime(); c.setTime(d);Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 7
  8. 8. A Classe: Date  A classe Date numera os meses e os dias da semana da seguinte forma:  Os meses de janeiro (january) a dezembro (december) são numerados de 0 a 11, assim como acontece na classe Calendar.  Os dias da semana são numerados de 0 a 6, sendo o domingo (sunday) o primeiro dia, diferentemente da numeração usada pela classe Calendar.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 8
  9. 9. A Classe Abstrata: DateFormat  A classe java.text.DateFormat permite converter Strings de inputs do usuário para Dates, seguindo um determinado formato.  Serve também para fazer o inverso: pegar uma data e gerar uma String de saída em um certo formato.  A classe SimpleDateFormat, que estende DateFormat, é a que oferece a forma mais fácil de fazer tudo isso.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 9
  10. 10. A Classe: SimpleDateFormat // usuário digita uma String String s = "21/02/1999"; // date format DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); // converte para Date Date data = df.parse(s); // formata para String de novo String formatada = df.format(data);Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 10
  11. 11. Exemplo usando Date private void botaoSalvarActionPerformed(java.awt.event.ActionEvent evt) { try { Usuario u = new Usuario(); u.setCodigo(Integer.parseInt(campoCodigo.getText())); Considerando que o u.setNome(campoNome.getText()); atributo data é do u.setLogin(campoLogin.getText()); tipo Date na classe Usuario. DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); df.setLenient(false); Date data = df.parse(campoData.getText()); u.setData(data); CadUsuario cad = new CadUsuarioImpl(); cad.adicionar(u); JOptionPane.showMessageDialog(this, "Usuário cadastrado com sucesso."); } catch (ParseException ex) { JOptionPane.showMessageDialog(this, "Formato de data inválido."); } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Erro ao salvar o usuário."); } }Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 11
  12. 12. Exemplo usando Calendar private void botaoSalvarActionPerformed(java.awt.event.ActionEvent evt) { try { Usuario u = new Usuario(); u.setCodigo(Integer.parseInt(campoCodigo.getText())); Considerando que o u.setNome(campoNome.getText()); u.setLogin(campoLogin.getText()); atributo data é do tipo Calendar na classe DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); Usuario. df.setLenient(false); Calendar data = new GregorianCalendar(); data.setTime(df.parse(campoData.getText())); u.setData(data); CadUsuario cad = new CadUsuarioImpl(); cad.adicionar(u); JOptionPane.showMessageDialog(this, "Usuário cadastrado com sucesso."); } catch (ParseException ex) { JOptionPane.showMessageDialog(this, "Formato de data inválido."); } catch (Exception ex) { JOptionPane.showMessageDialog(this, "Erro ao salvar o usuário."); } }Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 12
  13. 13. Comportamento da classe Date  Métodos de Date: DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); df.setLenient(false); //torna a validação mais rígida Date data = df.parse("18/06/2012"); //segunda-feira System.out.println("Dia do mês: " + data.getDate()); //resultado: 18 System.out.println("Mês: " + data.getMonth()); //resultado: 5 System.out.println("Ano: " + data.getYear()); //resultado: 112 System.out.println("Dia da semana: " + data.getDay()); //resultado: 1Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 13
  14. 14. Comportamento da classe Calendar  Métodos de Calendar: DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); df.setLenient(false); Calendar data = new GregorianCalendar(); data.setTime(df.parse("18/06/2012")); System.out.println("Dia do Mês: " + data.get(Calendar.DAY_OF_MONTH)); //resultado: 18 System.out.println("Mês: " + data.get(Calendar.MONTH)); //resultado: 5 System.out.println("Ano: " + data.get(Calendar.YEAR)); //resultado: 2012 System.out.println("Dia da Semana:" + data.get(Calendar.DAY_OF_WEEK)); //resultado: 2Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 14
  15. 15. Manipulação de Strings
  16. 16. A Classe: String  A classe String é imutável. Sendo assim, quando algo é concatenado a uma String, esta não é alterada. O que ocorre é a criação de uma nova String.  Por isso trabalhar com uma mesma String diversas vezes pode ter um efeito colateral: gerar inúmeras Strings temporárias.  Isto prejudica a performance da aplicação consideravelmente.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 16
  17. 17. A Classe: StringBuffer  Se for necessário trabalhar muito com a manipulação de uma mesma String (por exemplo, dentro de um laço), o ideal é utilizar a classe StringBuffer.  A classe StringBuffer representa uma sequência de caracteres.  Diferentemente da String, ela é mutável e, por isso, evita problemas de performance.Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 17
  18. 18. A Classe: StringBuffer import java.util.Scanner; public class Teste { public static void main(String[ ] args) { Scanner entrada = new Scanner(System.in); String nome; System.out.println("Informe seu nome: "); nome = entrada.next(); StringBuffer sb = new StringBuffer("Olá "); sb.append(nome); sb.append("!"); System.out.println(sb); } }Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 18
  19. 19. Tutoriais do Java  The Java Tutorials  Getting Started  http://java.sun.com/docs/books/tutorial/getStarted/  Learning the Java Language  http://java.sun.com/docs/books/tutorial/java/Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 19
  20. 20. Referências  Caelum: Ensino e Soluções em Java. FJ-11 – Java e Orientação a Objetos. http://www.caelum.com.br/curso/fj-11-java- orientacao-objetos/Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 20

×