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




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




                         Tec. em Sistemas para Internet - IFMS         22
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

Manipulação de Datas em Java

  • 1.
    Tecnologia em Sistemaspara Internet - IFMS Aula Extra – Manipulação de Datas em Java Tópicos em Programação Prof.º Msc. Sidney Roberto de Sousa
  • 2.
    O que veremosnesta 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: Pegandoa 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: Pegandoa 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: Pegandoa 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: Pegandoa 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: Pegandoa 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: Pegandoa 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: Pegandoa 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: Pegandooutra 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: Comparandodatas 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: Comparandodatas 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: Comparandodatas 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ãode 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ãode 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ãode 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); Tec. em Sistemas para Internet - IFMS 17
  • 18.
    Exemplo 4: Conversãode 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ãode 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áscarasde 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ãode 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: Pegandopartes 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); Tec. em Sistemas para Internet - IFMS 22
  • 23.
    Constantes da classeCalendar ● 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