Weitere ähnliche Inhalte Ähnlich wie POO - 24 - Classes Básicas do Java - Datas (20) Mehr von Ludimila Monjardim Casagrande (13) POO - 24 - Classes Básicas do Java - Datas3. 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 a
Calendar 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: 1
Classes 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: 2
Classes Básicas do Java ©2012 Ludimila Monjardim Casagrande 14
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