| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/04/2009 13:22:47
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Olá.
Sabemos que, em Java, podemos representar instantes do tempo através das classes Date e Calendar. Quando vocês estão modelando classes de negócio que possuem atributos do tipo data, quais dos dois tipos vocês costumam usar? Quais as vantagens e desvantagens de usar cada um deles?
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/04/2009 13:30:27
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
Se você quer só representar uma Data, pode utilizar o objeto Date.
Se quer manipular a data, então user Calendar(visto que os métodos de Date estão praticamente todos depreciados)
Ou tenha pena de sua sanidade e use o JodaTime para ambos os casos.
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2009 12:22:33
|
Felipe Kan
JavaEvangelist
Membro desde: 12/07/2005 16:13:03
Mensagens: 418
Offline
|
Eu só uso SimpleDateFormat!
Na SCJP eles cobram muito Date, DateFormat, Calendar, Locale... mas SimpleDateFormat é o "mais melhor de bom"!
This message was edited 1 time. Last update was at 18/04/2009 14:23:15
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2009 14:19:21
|
pcassiano
Virtual Machine Man
Membro desde: 07/06/2005 16:17:56
Mensagens: 730
Offline
|
Date está 99% deprecated... Gregorian Calendar não é perfeita, mas é menos pior...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2009 08:07:50
|
leandronsp
Virtual Machine Man
![[Avatar]](/images/avatar/b0dfd1bbadca4092f9d14d7a74085df0.jpg)
Membro desde: 22/03/2008 22:24:29
Mensagens: 520
Localização: São Paulo
Offline
|
Eu costumo declarar minhas variáveis como Date, e na hora de manipular, uso Calendar. Acontece que alguns métodos de Calendar retornam Date, fazendo com que guarde o resultado em um determinado tipo de variável: Date.
[]´s
|
Blog | Github | About me! |
Contribua => Parser HTML
Compartilhe arquivos e ideias no ebaH! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2009 10:21:31
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
leandronsp wrote:Eu costumo declarar minhas variáveis como Date, e na hora de manipular, uso Calendar. Acontece que alguns métodos de Calendar retornam Date, fazendo com que guarde o resultado em um determinado tipo de variável: Date.
[]´s
Atualmente, é o que eu faço também. Antes eu declarava tudo como Calendar, mas um objeto Date é bem mais leve - apesar de ter vários métodos depreciados.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2009 06:22:18
|
marcosalex
GUJ Expert
![[Avatar]](/images/avatar/0a8f8b227be2d04a675082cc9d51c127.jpg)
Membro desde: 20/02/2008 12:32:59
Mensagens: 3370
Offline
|
"
This message was edited 1 time. Last update was at 24/03/2011 13:12:39
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2009 17:23:27
|
colosos=colossus
JavaChild
![[Avatar]](/images/avatar/26a95a5834c46c93a5c200bfc6da212f.jpg)
Membro desde: 22/06/2009 17:08:26
Mensagens: 130
Localização: Belém
Offline
|
galera como eu posso somar uma data com uma que ta armazenada no meu banco?
e por exemplo se quiser somar apenas o mês ou apenas o dia tem como?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2009 23:09:12
|
jcneto
Debugger
Membro desde: 23/04/2008 07:00:09
Mensagens: 67
Offline
|
colosos=colossus wrote:galera como eu posso somar uma data com uma que ta armazenada no meu banco?
e por exemplo se quiser somar apenas o mês ou apenas o dia tem como?
Use a classe Calendar para fazer isso, dependendo de como vc quer vc vai usar ou o método add, ou o método roll:
de uma olhada: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html
|
Sun Certified Java Programmer - SCJP
Meu Blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2009 23:37:26
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Com ambos Date e Calendar você acaba com um código mutável.
Teu código vai ficar um uns bugs bem difíceis de serem debugados quando você começar a reaproveitar os objetos(alguém vai ter essa idéia de jerico), ou distribuí-los em várias threads. A otimização do sistema vai pro espaço.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 02:02:42
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
|
Sem duvida o joda-time é a API que voce sempre deve dar preferencia. Calendar é um pesadelo de se trabalhar!
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 08:39:29
|
colosos=colossus
JavaChild
![[Avatar]](/images/avatar/26a95a5834c46c93a5c200bfc6da212f.jpg)
Membro desde: 22/06/2009 17:08:26
Mensagens: 130
Localização: Belém
Offline
|
joda-time? galera como trabalho com isso? e o meu problema já não sei mais o que fazer, tão falando que da bug.
This message was edited 1 time. Last update was at 29/09/2009 08:40:32
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 09:53:44
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
tnaires wrote:
leandronsp wrote:Eu costumo declarar minhas variáveis como Date, e na hora de manipular, uso Calendar. Acontece que alguns métodos de Calendar retornam Date, fazendo com que guarde o resultado em um determinado tipo de variável: Date.
[]´s
Atualmente, é o que eu faço também. Antes eu declarava tudo como Calendar, mas um objeto Date é bem mais leve - apesar de ter vários métodos depreciados.
Esta discussão me escapou , por algum motivo...
Date é um Value Object para o long que representa o tempo decorrido de um determinado ponto do tempo representando um instante.
O problema com o Date é que ele - no inicio - transformava esse long em uma representação dia-mes-ano que não é i18n/l10n. Com a introdução de Calendar que é uma calculadora temporal a 18n foi introduzida e os métodos de date deprecated. O fato dos métodos de date estarem deprecated não é um problema! O método mais importante de date - e o único que é relevante para este VO - getTime() não está deprecated. A classe Date não está deprecated. Logo, ela deve ser usada como tiny type para tipagem forte de datas. Além disso Date deve ser considerado imutável pois são os seus métodos mutáveis que estão deprecated.
Calendar além de ser uma calculadora e não um VO (e portanto inerentemente mais pesado) é abstrato. O que significa que em runtime alguem pode ferrar seu codigo ou negocio passando a implementação errada. Básicamente ao usar calendar vc assume que será usado GregorianCalendar , mas isso não é garantido pela tipagem já que Calendar é abstract. Além disso se quiser fazer contas em diversos time frames ainda terá que utilizar um outro calendar (imagine-se usar o calendário tailandêz.para calcular juros...sei lá) Portanto no fim apenas será usado calendar.getTimeMilis que retorna o mesmo que date.getTime.
Como tipo sempre usar Date (ou melhor. Na realidade a pergunta é :porque raios vc não tem uma api própria para tratamento de datas ? Se não quer fazer uma , use uma que já existe.) como calculador sempre usar Calendar (ou melhor) , lembrando que calculos devem ser encapsulados em outros objetos/servicos (via interface) de forma que possa usar calendar ou outra implementação futura melhor (java 7 e sua data api , se vier, ou joda-time)
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 10:13:06
|
colosos=colossus
JavaChild
![[Avatar]](/images/avatar/26a95a5834c46c93a5c200bfc6da212f.jpg)
Membro desde: 22/06/2009 17:08:26
Mensagens: 130
Localização: Belém
Offline
|
Sua explicação esclareceu muitas coisas mais como eu ainda estou em fase de treinamento com java não sei como somar uma data com a outra, queria um exemplo, eu vi que pode usar add ou roll.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 10:27:57
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
colosos=colossus wrote:Sua explicação esclareceu muitas coisas mais como eu ainda estou em fase de treinamento com java não sei como somar uma data com a outra, queria um exemplo, eu vi que pode usar add ou roll.
Você quer somar uma data com outra(datas não somam) ou uma data com uma duração?
Com Joda Time:
This message was edited 1 time. Last update was at 29/09/2009 10:32:46
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
|
|