Post on 09-Jun-2015
Tecnologia em Sistemas para Internet - IFMS
Aula Extra – Manipulação de Datas em Java
Tópicos em ProgramaçãoProf.º Msc. Sidney Roberto de Sousa
Tec. em Sistemas para Internet - IFMS 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 20
Entendendo as máscaras de data
d → dia do mêsD → dia do anoF → dia da semana no mêsa → marcador de am/pmw → semana do anoW → semana do mêsM → mêsm → minutoy → ano
h → hora em am/pm (1 a 12)H → hora do dia (0 a 23)k → hora do dia (1 a 24)K → hora em am/pm (0 a 11)s → segundosS → milissegundosz → Sistema de tempo (general time zone)Z → Sistema de tempo (RFC 822 time zone)G → designador de era (ex.: AD)
Tec. em Sistemas para Internet - IFMS 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 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 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