| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 07:06:46
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Bom dia a todos,
Queria fazer um método que permitisse incrementar dias ou meses ou anos em uma data. Para isso usei a seguinte estrutura:
Esse método recebe como parâmetros uma data (String... motivo do meu problema), um inteiro que representa o incremento (ou decremento) e uma outra que define se o processamento ocorrerá sobre o dia, mês ou ano.
O meu problema está no momento em que eu gero o GregorianCalendar, ali eu tive que fazer um substring para obter as partes da data, no entanto, não tem como eu garantir que a data estará sempre nesse formato (dd/MM/yyyy).
Queria saber se tem alguma forma de descobrir o formato que está sendo utilizado para formatar a data na máquina do cliente? Ou, seria melhor ainda, se tem como eu obter as partes da data (dia, mês e ano) de uma String independentemente do formato em que ela se encontre?
Desde já agradeço pela atenção
[]s
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 07:30:16
|
Vini Fernandes
Virtual Machine Man
![[Avatar]](/images/avatar/84cd1f88d088c3a15254f37a22f6e5d6.jpg)
Membro desde: 20/01/2009 08:43:02
Mensagens: 523
Offline
|
Cara, para formatar datas costumo utilizar a SimpleDateFormat:
Mais detalhes voce conseguira nma APi, tem muitos recursos lá!
ate mais
|
What do you know about Java? Help me! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 07:38:48
|
rissato
JavaEvangelist
![[Avatar]](/images/avatar/e355ad06c5a89f911fbb0aff2de52435.jpg)
Membro desde: 16/05/2006 22:07:12
Mensagens: 446
Localização: Uberlândia
Offline
|
pq vc nao usa o método add() da classe Calendar?
|
Quer vc pense que é capaz ou não, vc está certo!
Sun Certified Java Programmer 6.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 07:42:27
|
g4j
GUJ Ranger
![[Avatar]](/images/avatar/bea3c20edb84a0dd83a99a9a7274bc67.jpg)
Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline
|
eberson_oliveira wrote:
Queria saber se tem alguma forma de descobrir o formato que está sendo utilizado para formatar a data na máquina do cliente? Ou, seria melhor ainda, se tem como eu obter as partes da data (dia, mês e ano) de uma String independentemente do formato em que ela se encontre?
Sem chance! Você só consegue quando o dia do mês for maior que 12. Imagine a data 12/12/2008. Impossível saber qual é o dia pra poder pegar o próximo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 11:40:52
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Vini Fernandes wrote: Cara, para formatar datas costumo utilizar a SimpleDateFormat:
Mais detalhes voce conseguira nma APi, tem muitos recursos lá!
ate mais
Olá Vini Fernandes,
O meu problema está no fato de não saber em que formato a data virá... pode ser uma string qualquer, inclusive inválida, eu queria identificar as partes adicionar dias, meses, anos, conforme a necessidade e retornar no mesmo formato que me foi enviada.
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 11:45:14
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
rissato wrote:pq vc nao usa o método add() da classe Calendar?
Ola rissato,
Eu pretendo usar sim o método add, só que não sei como informar a data para ele... eu estou utilzando o GregorianCalendar e não encontrei um construtor onde pudesse informar uma string contendo uma data qualquer... Eu preciso receber essa data e manipulá-la, da forma como mencionou, porém não sei como passar a data para ele...
alguma idéia?
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 11:48:51
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
g4j wrote:
eberson_oliveira wrote:
Queria saber se tem alguma forma de descobrir o formato que está sendo utilizado para formatar a data na máquina do cliente? Ou, seria melhor ainda, se tem como eu obter as partes da data (dia, mês e ano) de uma String independentemente do formato em que ela se encontre?
Sem chance! Você só consegue quando o dia do mês for maior que 12. Imagine a data 12/12/2008. Impossível saber qual é o dia pra poder pegar o próximo.
Olá g4j,
Por isso mesmo eu queria descobrir uma forma de descobrir uma forma de identificar o formato ou passá-lo a algum objeto que identifique automaticamente... Imaginei que tivesse alguma api que tivesse acesso a esse tipo de informação, mas não estou encontrando nada... Pensei em procurar, inicialmente, no Locale, mas não achei nada que eu pudesse e/ou soubesse usar...
Tem alguma solução/idéia?
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 11:55:10
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
GregorianCalendar não tem um construtor que recebe uma string. Em vez disso, normalmente se faz algo parecido com o seguinte:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 12:40:49
|
rissato
JavaEvangelist
![[Avatar]](/images/avatar/e355ad06c5a89f911fbb0aff2de52435.jpg)
Membro desde: 16/05/2006 22:07:12
Mensagens: 446
Localização: Uberlândia
Offline
|
eberson_oliveira wrote:
rissato wrote:pq vc nao usa o método add() da classe Calendar?
Ola rissato,
Eu pretendo usar sim o método add, só que não sei como informar a data para ele... eu estou utilzando o GregorianCalendar e não encontrei um construtor onde pudesse informar uma string contendo uma data qualquer... Eu preciso receber essa data e manipulá-la, da forma como mencionou, porém não sei como passar a data para ele...
alguma idéia?
[]s
|
Quer vc pense que é capaz ou não, vc está certo!
Sun Certified Java Programmer 6.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 13:06:28
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
thingol wrote:GregorianCalendar não tem um construtor que recebe uma string. Em vez disso, normalmente se faz algo parecido com o seguinte:
Olá thingol,
Entendi o seu exemplo.... acho que não estou conseguindo me expressar...
Eu pretendo receber uma data num formato qualquer ("dd/MM/yyyy", "d/M/yy", etc ), adicionar um mês, por exemplo, e retorná-la no mesmo formato em que recebi (para não alterar o formato de quem invocou o meu método)
Já fiz vários testes, mas não obtive sucesso...
Entendeu o que estou tentando fazer? Não sei se é possível...
grato pela atenção,
[]s
[/code]
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 13:09:00
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
rissato wrote:
eberson_oliveira wrote:
rissato wrote:pq vc nao usa o método add() da classe Calendar?
Ola rissato,
Eu pretendo usar sim o método add, só que não sei como informar a data para ele... eu estou utilzando o GregorianCalendar e não encontrei um construtor onde pudesse informar uma string contendo uma data qualquer... Eu preciso receber essa data e manipulá-la, da forma como mencionou, porém não sei como passar a data para ele...
alguma idéia?
[]s
Olá rissato,
Isso funciona com a data atual.. mas se for uma data qualquer, num formato qualquer e string ainda...
como faço para manipulá-la e retornar o resultado no mesmo formato que recebi?
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 13:14:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você pode então fazer o seguinte: digamos que existam 3 formatos que você aceite (afinal de contas, seu programa não usa inteligência artificial, ou usa?). Então crie 3 DateFormat, um para cada formato aceito.
Use setLenient(false) para que o método parse gere uma exceção se não estiver no formato aceito.
Se você conseguir ler o dado, então use o formato para formatar o resultado na volta.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 13:37:47
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
thingol wrote:
Você pode então fazer o seguinte: digamos que existam 3 formatos que você aceite (afinal de contas, seu programa não usa inteligência artificial, ou usa?). Então crie 3 DateFormat, um para cada formato aceito.
Use setLenient(false) para que o método parse gere uma exceção se não estiver no formato aceito.
Se você conseguir ler o dado, então use o formato para formatar o resultado na volta.
Entendi... vou adotar a sua solução.. farei alguns testes e depois coloco o resultado. Sobre a inteligência artificial, só não uso porque não sei... :cry: mas quando aprender... volto aqui e coloco a solução usando esse conceito :D
Muito grato pela ajuda
[]s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 14:21:55
|
rissato
JavaEvangelist
![[Avatar]](/images/avatar/e355ad06c5a89f911fbb0aff2de52435.jpg)
Membro desde: 16/05/2006 22:07:12
Mensagens: 446
Localização: Uberlândia
Offline
|
Olá rissato,
Isso funciona com a data atual.. mas se for uma data qualquer, num formato qualquer e string ainda...
como faço para manipulá-la e retornar o resultado no mesmo formato que recebi?
[]s
Só vc substituir o "new Date()" pela data que vc quer... e pra isso vc nao precisa nem pensar em formato...
|
Quer vc pense que é capaz ou não, vc está certo!
Sun Certified Java Programmer 6.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2009 15:30:34
|
eberson_oliveira
JavaGuru
![[Avatar]](/images/avatar/b0074757eb8e629f5a4c89a4b40b277e.jpg)
Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline
|
Olá a todos,
Montei o código da seguinte maneira:
Coloquei apenas dois tipos (só para ver se funcionaria), e fiz o seguinte teste:
obtive o seguinte resultado:
Como faço para que ele entender que deve retornar 02/12/08, por exemplo, ao invés de 02/12/0008?
Usei o setLenient( false )... mas quando tentou pegar uma data: "02/12/08" com formato "dd/MM/yyyy" não deu exception... alguma idéia?
Agradeço desde já,
[]s
|
|
|
 |
|
|