|
No dia-a-dia do desenvolvimento
Java enfrentamos muitos cenários comuns:
trabalhar com datas, formatar números, Strings,
ordenar objetos, procurar por objetos, trabalhar
com arrays, manipular coleções de
objetos, gerar números aleatórios
e outros. O pacote java.util possui uma série
de classes já prontas com tais funcionalidades
e conhecê-las é fundamental para facilitar
o desenvolvimento de sua aplicação.
Aqui, veremos separadamente algumas das principais
classes e interfaces desse pacote, assim como suas
utilidades mais práticas e dicas de onde
usar cada uma delas.
Classes Utilitárias
java.util.Calendar
A classe
abstrata Calendar encapsula um momento no tempo
representado em milissegundos. Também provê
métodos para manipulação desse
momento. A subclasse concreta de Calendar mais usada
é a GregorianCalendar que representa o calendário
usado pela maior parte dos países (outras
implementações existem, como a do
calendário budista BuddhistCalendar, mas
que são internas e devolvidas de acordo com
seu Locale).
Para obter um Calendar que encapsula o instante
atual (data e hora), usamos o método estático
getInstance() de Calendar (veja o próximo
exemplo).
A partir de um Calendar, podemos saber o valor de
seus campos, como ano, mês, dia, hora e minuto.
Para isso, usamos o método get que recebe
um inteiro representando o campo; os valores possíveis
estão em constantes na classe Calendar.
No exemplo abaixo, imprimimos o dia de hoje e o
dia da semana correspondente. Note que o dia da
semana devolvido é um inteiro que representa
o dia da semana (Calendar.MONDAY, etc.):
Calendar c = Calendar.getInstance();
System.out.println(“Dia do Mês: “
+ c.get(Calendar.DAY_OF_MONTH));
System.out.println(“Dia da Semana: “
+ c.get(Calendar.DAY_OF_WEEK));
Um possível
resultado é:
Dia do Mês:
4
Dia da Semana: 5
No exemplo
acima, o dia da semana 5 representa a quinta-feira.
Da mesma forma que podemos obter os valores dos
campos, podemos atribuir novos valores a esses campos
por meio dos métodos set.
Há diversos métodos set em Calendar.
O mais geral é o que recebe dois argumentos:
o primeiro indica qual é o campo (usando
as constantes de Calendar) e o segundo, o novo valor.
Além desse método set, outros métodos
set recebem valores de determinados campos; o set
de três argumentos, por exemplo, recebe ano,
mês e dia. Vejamos um exemplo de como alterar
a data de hoje:
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR, 10); // fazemos hora valer
10
c.set(Calendar.MINUTE, 30); // fazemos minuto valer
30
c.set(2005, 12, 25); // mudamos a data para o Natal!
Outro
método bastante usado é add que adiciona
uma certa quantidade a qualquer campo do Calendar.
Por exemplo, para adicionar um ano à data
de hoje fazemos:
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 1); // adiciona 1 ao ano
Note
que, embora o método se chame add, você
pode usá-lo para subtrair valores também;
basta colocar uma quantidade negativa no segundo
argumento!
Os métodos after e before são usados
para comparar o objeto Calendar em questão
a outro Calendar. O método after devolverá
true quando o Calendar em questão estiver
num momento no tempo maior que o do Calendar passado
como argumento. Por exemplo, after devolverá
false se compararmos o Dia das Crianças com
o Natal, pois o Dia das Crianças não
vem depois do Natal:
Calendar c1 = new
GregorianCalendar(2005, Calendar.OCTOBER, 12);
Calendar c2 = new GregorianCalendar(2005, Calendar.DECEMBER,
25);
System.out.println(c1.after(c2)); // imprime false
Analogamente,
o método before verifica se o momento em
questão vem antes do momento do Calendar
passado como argumento. No exemplo acima, c1.before(c2)
devolverá true, pois o Dia das Crianças
vem antes do Natal.
Note que Calendar implementa a interface Comparable
(que será explicada no final do artigo).
Isso quer dizer que você pode usar o método
compareTo para comparar dois calendários.
No fundo, after e before usam o compareTo para dar
suas respostas.
Por último, um dos problemas mais comuns
quando lidamos com datas é verificar o intervalo
entre duas datas. O método a seguir devolve
o número de dias entre dois objetos Calendar.
O cálculo é feito pegando a diferença
entre as datas em milissegundos e dividindo esse
valor pelo número de milissegundos em um
dia:
public int diferencaEmDias(Calendar
c1, Calendar c2) {
long m1 = c1.getTimeInMillis();
long m2 = c2.getTimeInMillis();
return (int) ((m2 - m1) / (24*60*60*1000));
}
java.util.Random
Gerar
números aleatórios é uma tarefa
muito comum, seja para gerar senhas temporárias,
número de hash para identificar o cliente,
etc.
A classe java.lang.Math conta com o método
random, que gera um número entre 0 e 1. Gerar
um número inteiro entre 0 e 100:
int x = (int) (Math.random()
* 100);
System.out.println(x);
continua...
|