![]() |
![]() ![]() Manipulando datas em Java
![]() Por Rafael da Silva(crafards@gmail.com)
Nesta edição, aprenda alguns recursos que lhe ajudarão a manipular datas e tempo, em Java, de forma descomplicada.
Na classe java.util.Date, podemos obter a data atual simplesmente criando um objeto Date, sem parâmetros, como no exemplo abaixo: Date d = new Date(); Podemos também, utilizando o construtor sobrecarregado, passar outra data em milissegundos, desde 1º de janeiro de 1970. Date d new Date(374021196980L) //7 de novembro de 1981 Para obtermos a data atual utilizando a classe java.util.Calendar, basta operarmos da seguinte forma: Calendar c = Calendar.getInstance(); Com a instancia ‘c’ de Calendar, podemos configurar uma data de várias formas. c.setTime(new Date()); //passando um objeto Date c.set(year,month,day); c.set(year,month,day,hour,minute); //atraves do metodo sobrecarregado ‘set’ c.set(year,month,day,hour,minute,second); Também podemos avançar nosso calendario no tempo, utilizando o método add. Este método recebe dois parâmetros, o primeiro é uma constante inteira, que representa a unidade que será incrementada no calendario e o segundo parametro é o numero de vezes que essa unidade será incrementada. A classe java.util.Calendar fornece várias constantes que podem representar segundos, horas, dias, meses e anos. Algumas das constantes de java.util.Calendar: Calendar.SECOND, Calendar.HOUR, Calendar.HOUR_OF_DAY, Calendar.DAY_OF_MONTH, Calendar.DAY_OF_WEEK, Calendar.MONTH, Calendar.YEAR Exemplos de uso do método add: c.add(Calendar.YEAR, 40); //adiciona 40 anos ;) c.add(Calendar.MONTH, 3); //adiciona 3 meses c.add(Calendar.DAY_OF_YEAR, 30); //adiciona 30 dias Essas constantes também são uteis caso queira saber outras informações a respeito da data, através do método get: c.get(Calendar.DAY_OF_MONTH); //adquire o dia do mês c.get(Calendar.DAY_OF_YEAR); //adquire o dia do ano Um detalhe importante é que Calendar conta os meses a partir de 0. Portanto, se estamos em julho, estamos no mês 6. Uma alternativa mais completa que a atualmente fornecida por Java para representar datas é a biblioteca Joda. Nessa biblioteca utiliza-se a classe org.joda.time.DateTime para instanciar a data atual: DateTime dt = new DateTime(); A manipulação das datas também é bastante fácil: int month = dt.getMonthOfYear(); //adquire o mês dt.withYear(2000) //muda o ano para 2000 monthName = dt.monthOfYear().getAsText(); //adquire o mês em texto Em Joda o mês é contado a partir de 1. Ou seja, se estamos em Julho, estamos no mês 7. A biblioteca também possui uma internacionalização bastante fácil: String frenchMonthName = dt.monthOfYear().getAsText(Locale.FRENCH); //adquire o nome do mes em francês String germanMonthName = dt.monthOfYear().getAsText(Locale.GERMAN); //o mesmo, porém em alemão Diferente da API de Java, que só implementa o calendário Gregoriano, comum nas culturas ocidentais, Joda possui 8 sistemas de calendário, ou cronologia, como é chamado, e pretende aumentar o número de calendários com o tempo. Como calendário padrão, a biblioteca adota o ISO8601, que é uma formalização do Calendário Gregoriano utilizada no mundo dos negócios. DateTime buddist = dt.withChronology(BuddhistChronology.getInstance()); //muda a instancia ‘dt’ para o calendario budista DateTime islamic = dt.withChronology(IslamicChronology.getInstance()); //o mesmo, porém no calendário islão Joda é uma boa alternativa para as bibliotecas padrões de Java, que já tem um grande número de construtores deprecated, e portanto, não podem/devem mais ser instanciados. Na página inicial da biblioteca, os desenvolvedores apontam diversos motivos para utilizar Joda em sua aplicação. Entre eles: a facilidade de uso, facilidade para estender suas classes, internacionalização descomplicada, cálculos entre zonas e fusos-horários fáceis, vários calendários diferentes, bom desempenho, um guia rápido e um guia completo. Joda também está sob a licença Apache 2.0 e tem código aberto, sendo seu repositório de versões bem visível na página principal. O lançamento da oitava versão de Java promete várias mudanças nas classes de manipulação de tempo e datas, mas por enquanto, em geral, muitos desenvolvedores concordam que Joda-time é a melhor opção de API para datas Jornal PETNews - Edição: Jessika Renally - Revisão: Tiaraju Smaneoto e Lívia Sampaio
Grupo PET Computação UFCG, 2013. All rights reserved. |
![]() |