Your SlideShare is downloading. ×
POO - 24 - Classes Básicas do Java - Datas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

2,663
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,663
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Fundamentos da Linguagem Java Classes Básicas da API do Java Datas e Strings Ludimila Monjardim Casagrande 2012
  • 2. Manipulação de Datas
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Manipulação de Strings
  • 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. 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. 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. 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. 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