1. Tecnologia em Sistemas para Internet - IFMS
Aula Extra – Manipulação de Datas em Java
Tópicos em Programação
Prof.º Msc. Sidney Roberto de Sousa
2. O que veremos nesta aula?
● As classes Date e Calendar da linguagem
Java
● Conversão de Date para String e vice e versa
● Manipulação de datas de máscaras variadas
● Trabalhando com dias, meses, anos, horas,
minutos e segundos com o tipo Date
Tec. em Sistemas para Internet - IFMS 2
3. A classe Date
● A JDK oferece a classe Date do pacote
java.util para o armazenamento e
manipulação de datas
● A classe Date permite manipular datas em
diversos formatos, podendo ser utilizada de
forma coerente em diversos padrões mundiais
Tec. em Sistemas para Internet - IFMS 3
4. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Tec. em Sistemas para Internet - IFMS 4
5. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Dia da semana (quinta-feira)
Tec. em Sistemas para Internet - IFMS 5
6. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Mês (abril)
Tec. em Sistemas para Internet - IFMS 6
7. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Dia do mês
Tec. em Sistemas para Internet - IFMS 7
8. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Horário atual
Tec. em Sistemas para Internet - IFMS 8
9. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Sistema de tempo utilizado
(no caso, Amazon Time)
Tec. em Sistemas para Internet - IFMS 9
10. Exemplo 1: Pegando a data atual
Date dataAtual = new Date();
System.out.print(dataAtual);
/* Se executado no dia 18 de abril de 2013,
* exibirá a string abaixo:
* Thu Apr 18 00:02:29 AMT 2013
*/
Ano
Tec. em Sistemas para Internet - IFMS 10
11. Exemplo 2: Pegando outra data explicitamente
com a classe Calendar
/*
* Para pegar uma data que não seja a atual de forma explícita, é
* preciso utilizar antes a classe Calendar do pacote java.util
*/
Calendar calendario = Calendar.getInstance();
/*
* O método set da classe Calendar recebe 3 argumentos: ano, mês (valor
* entre [0..11], respectivamente [Janeiro..Dezembro]) e dia do mês
*/
calendario.set(2010, 11, 23);
Date outraData = calendario.getTime();
System.out.println(outraData);
/*
* Imprime na tela: Thu Dec 23 00:24:03 AMST 2010
*/
Tec. em Sistemas para Internet - IFMS 11
12. Exemplo 3: Comparando datas
Date data1 = new Date();
Calendar calendario = Calendar.getInstance();
calendario.set(1991, 1, 27);
Date data2 = calendario.getTime();
/*
* O método after da classe Date verifica se a data
* do objeto atual vem depois da data do argumento
*/
boolean dataUmEMaisAtual = data1.after(data2);
System.out.println(dataUmEMaisAtual); // Imprime true
Tec. em Sistemas para Internet - IFMS 12
13. Exemplo 3: Comparando datas
Date data1 = new Date();
Calendar calendario = Calendar.getInstance();
calendario.set(1991, 1, 27);
Date data2 = calendario.getTime();
/*
* O método before da classe Date verifica se a data
* do objeto atual vem antes da data do argumento
*/
boolean dataUmEMaisAtual = data1.before(data2);
System.out.println(dataUmEMaisAtual); // Imprime false
Tec. em Sistemas para Internet - IFMS 13
14. Exemplo 3: Comparando datas
Date data1 = new Date();
Calendar calendario = Calendar.getInstance();
calendario.set(1991, 1, 27);
Date data2 = calendario.getTime();
/*
* O método equals da classe Date verifica se a data
* do objeto atual é igual à data do argumento
*/
boolean datasSaoIguais = data1.equals(data2);
System.out.println(datasSaoIguais); // Imprime false
Tec. em Sistemas para Internet - IFMS 14
15. Exemplo 4: Conversão de Date para String
Date data = new Date();
/*
* Conversão simples de Date para
* String
*/
String stringData = "" + data;
System.out.println(stringData);
Tec. em Sistemas para Internet - IFMS 15
16. Exemplo 4: Conversão de Date para String
Date data = new Date();
/*
* A classe SimpleDateFormat do pacote java.text oferece meios
* para a formatação de datas em vários padrões.
*/
SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("dd/MM/yyyy");
String stringData = formatadorDeDatas.format(data);
// Exibe a data no formato dd/mm/aaaa
System.out.println(stringData);
Tec. em Sistemas para Internet - IFMS 16
17. Exemplo 4: Conversão de Date para String
Date data = new Date();
/*
* A classe SimpleDateFormat do pacote java.text oferece meios
* para a formatação de datas em vários padrões.
*/
SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("yyyyMMdd");
String stringData = formatadorDeDatas.format(data);
// Exibe a data no formato aaaammdd
System.out.println(stringData);
Tec. em Sistemas para Internet - IFMS 17
18. Exemplo 4: Conversão de Date para String
Date data = new Date();
/*
* A classe SimpleDateFormat do pacote java.text oferece meios
* para a formatação de datas em vários padrões.
*/
SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
String stringData = formatadorDeDatas.format(data);
// Exibe a data e horário no formato dd/mm/aaaa hh:mm:ss
System.out.println(stringData);
Tec. em Sistemas para Internet - IFMS 18
19. Exemplo 4: Conversão de Date para String
Date data = new Date();
/*
* A classe SimpleDateFormat do pacote java.text
* oferece meios para a formatação de datas em vários
* padrões.
*/
SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("hh:mm:ss");
String stringData = formatadorDeDatas.format(data);
// Exibe o horário atual
System.out.println(stringData);
Tec. em Sistemas para Internet - IFMS 19
20. Entendendo as máscaras de data
d → dia do mês h → hora em am/pm (1 a 12)
D → dia do ano H → hora do dia (0 a 23)
F → dia da semana no mês k → hora do dia (1 a 24)
a → marcador de am/pm K → hora em am/pm (0 a 11)
w → semana do ano s → segundos
W → semana do mês S → milissegundos
M → mês z → Sistema de tempo (general time
m → minuto zone)
y → ano Z → Sistema de tempo (RFC 822 time
zone)
G → designador de era (ex.: AD)
Tec. em Sistemas para Internet - IFMS 20
21. Exemplo 5: Conversão de String para Date
String stringData = "18/09/2011";
SimpleDateFormat formatadorDeDatas = new SimpleDateFormat("dd/MM/yyyy");
Date data;
try {
/*
* O método parse da classe SimpleDateFormat realiza a conversão de
* uma string contendo a informação de uma data específica em um
* objeto Date. O método pode lançar uma exceção caso a string
* informada não possua a informação correta de uma data. Note que neste
* exemplo a máscara utilizada no formatador é compatível com a data contida
* na variável stringData. Se a máscara não for compatível com a informação da
* data correspondente, o método parse lançará uma exceção.
*/
data = formatadorDeDatas.parse(stringData);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(data);
Tec. em Sistemas para Internet - IFMS 21
22. Exemplo 6: Pegando partes da data
Calendar calendar = Calendar.getInstance();
/*
* O método get da classe Calendar retorna a informação desejada
* referente à data armazenada no objeto Calendar. No próximo slide,
* veja as constantes referentes a cada tipo de informação.
*/
int diaDoMes = calendar.get(Calendar.DAY_OF_MONTH);
// Lembrese que o número do mês varia entre [0..1]
int numeroMes = calendar.get(Calendar.MONTH) + 1;
int ano = calendar.get(Calendar.YEAR);
System.out.println(diaDoMes + "/" + numeroMes + "/" + ano);
Tec. em Sistemas para Internet - IFMS 22
23. Constantes da classe Calendar
● Calendar.AM_PM → período do dia (am ou pm)
● Calendar.DAY_OF_MONTH → dia do mês
● Calendar.DAY_OF_WEEK → dia da semana
● Calendar.DAY_OF_WEEK_IN_MONTH → dia da semana no mês
● Calendar.DAY_OF_YEAR → dia do ano
● Calendar.ERA → designação de era
● Calendar.HOUR → hora (0 a 11)
● Calendar.HOUR_OF_DAY → hora (0 a 23)
● Calendar.MILLISECOND → milissegundos
● Calendar.MINUTE → minutos
● Calendar.MONTH → mês
● Calendar.SECOND → segundos
● Calendar.WEEK_OF_MONTH → semana da mês
● Calendar.WEEK_OF_YEAR → semana do ano
● Calendar.YEAR → ano
Tec. em Sistemas para Internet - IFMS 23