Classe para se trabalhar com datas

Li o tutorial sobre datas aqui do GUJ mas ainda me restam dúvidas.
O que eu realmente preciso é de uma classe com métodos que me permitam ter a diferença entre duas datas, em minutos, horas e dias. A classe Date me permite fazer isso transformando em long e comparando diretamente com valores long correspondentes ao tempo que eu quero (300000 = 5 minutos).
Também preciso saber se determinada data está edentro de uma faixa de horários (enter 7:00 e 16:00 por exemplo). Para isso eu estou achando que GregorianCalendar será melhor, pois trabalhando com Date, para datas com hora 0:00:00 e fazendo um MOD (%) com 86.400.000, que é o equivalente a 24h em milisegundos, estou obtendo um resto de 10.800, que são 3h. Acho que isso é porque no DateFormat estou usando o Locale correspondente a Brasil, certo?
Terei problema com essas 3h a mais se o programa for rodar em micros com outras configurações regionais? Ou o fato de eu ter de eu ter declarado " Locale brasil = new Locale(“pt”,“BR”) ", e utilizado essa variável no DateFormat, elimina qualquer chance de erro? Trabalhando com Gregoriancalendar eu irei ‘setar’ os valores de hora, minuto e segundo diretamente, independente de localidade, certo?

No fim das contas, acho que tenho que decidir entre a facilidade de contas do Date e a independência de localidade do GregorianCalendar, certo? Não tem nenhuma classe com tudo isso junto… ou tem?
Existe realmente algum impedimento de se utilizar Date? Existe alguma indicação de que ela vai virar deprecated ou é só suposição?

abraços,
Ricardo Grego

Tipo, com o simpledate format vc pode fazer tudo isso, converter no tipo de dado que deseja e fazer a coparação sem problemas.

Com o java.text.SimpleDateFormat você define exatamente como vc quer formatar a hora, com o date vc pode configurar isto.

O caso de deprecated pode acontecer mais adiante, {{com o código }}.

O locale tmb nao tem nenhum problema.

Você não deve se preocupar se um método estará deprecated em outras versões, pois o bytecode é interpretado normalmente. A alteração seria feita apenas no codigo fonte.

Blackhat,

Eu dei uma olhada por cima no SimpleDateFormat e me pareceu ter muito poucos recursos para se fazer contas entre Dates. Mas vou olhar com calma depois. Nessa primeira olhada essa classe me pareceu bem confusa!

Obrigado

[]'s
Ricardo Grego

também gosto muito de transformar as datas para long, e fazer as operações com ela

não tem muito problema voce usar a Date, mas eu nao usaria nenhum método depracted. se esta deprecated, existe alguma outra coisa que não está!

isso que voce esta querendo, eu faço assim, com GregorianCalendar


GregorianCalendar dia1 = new GregorianCalendar();
GregorianCalendar dia2 = new GregorianCalendar();

// seta os dias, horas, anos, etc...
dia1.set(...);
dia2.set(...);

long l1 = dia1.getTimeInMillis();
long l2 = dia2.getTimeInMillis();

GregorianCalendar diferenca = new GregorianCalendar();
diferenca.setTimeInMilis(l1 - l2);

// agora diferenca contem dia1 - dia2