manipulação de datas em java

23
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

Upload: sidney-roberto

Post on 09-Jun-2015

4.718 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Manipulação de Datas em Java

Tecnologia em Sistemas para Internet - IFMS

Aula Extra – Manipulação de Datas em Java

Tópicos em ProgramaçãoProf.º Msc. Sidney Roberto de Sousa

Page 2: Manipulação de Datas em Java

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

Page 3: Manipulação de Datas em Java

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

Page 4: Manipulação de Datas em Java

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

 */

Page 5: Manipulação de Datas em Java

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)

Page 6: Manipulação de Datas em Java

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)

Page 7: Manipulação de Datas em Java

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

Page 8: Manipulação de Datas em Java

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

Page 9: Manipulação de Datas em Java

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)

Page 10: Manipulação de Datas em Java

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

Page 11: Manipulação de Datas em Java

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

 */

Page 12: Manipulação de Datas em Java

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

Page 13: Manipulação de Datas em Java

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

Page 14: Manipulação de Datas em Java

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

Page 15: Manipulação de Datas em Java

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);

Page 16: Manipulação de Datas em Java

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);

Page 17: Manipulação de Datas em Java

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("yyyy­MM­dd");

String stringData = formatadorDeDatas.format(data);

// Exibe a data no formato aaaa­mm­dd

System.out.println(stringData);

Page 18: Manipulação de Datas em Java

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);

Page 19: Manipulação de Datas em Java

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);

Page 20: Manipulação de Datas em Java

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)

Page 21: Manipulação de Datas em Java

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);

Page 22: Manipulação de Datas em Java

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);

// Lembre­se 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);

Page 23: Manipulação de Datas em Java

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