Descrobrir formato da data  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Acho que você tem de testar primeiro o "dd/MM/yy" e depois o "dd/MM/yyyy".
[WWW]
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

Uma opção crie uma expressão regular para validar se a data esta no formato requerido por exemplo:

Validar este formato: dd/MM/yyyy



Fica a seu critério ...

my delicious|follow me|linkedin
[Email] [ICQ]
eberson_oliveira
JavaGuru
[Avatar]

Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline

thingol wrote:Acho que você tem de testar primeiro o "dd/MM/yy" e depois o "dd/MM/yyyy".


Olá thingol,

Fiz o teste que vc sugeriu e funcionou... sabe dizer porque não lançou exception quando mandei a data no formato "errado"?

ramilani12 wrote:
Uma opção crie uma expressão regular para validar se a data esta no formato requerido por exemplo:

Validar este formato: dd/MM/yyyy



Olá ramilani12,

Gostei do formato por expressão regular.. no entanto, como faço para contemplar algo desse tipo: "MM/dd/yyyy" e "dd/MM/yyyy"?
tem alguma idéia?

[]s
[Email] [MSN]
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

Oras, é só inverter a expressão:

1º Exemplo: valida se o formato está dd/mm/yyyy



2º Exemplo valida se está neste formato: mm/dd/yyyy



(0[1-9]|[1-2][0-9]|3[0-1]) -> Aqui valida o dia com as seguintes ocorrências : 01 , 17 ou 31
(0[1-9]|1[0-2]) -> Aqui valida o mês com as seguintes ocorrências: 01 , 09 , 10 até 12
\\d{4} -> Valida o ano 2009 , 2010 com tamanho limitado a 4, bom ira demorar um pouco até chegarmos no ano de 20001

my delicious|follow me|linkedin
[Email] [ICQ]
eberson_oliveira
JavaGuru
[Avatar]

Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline

ramilani12 wrote:Oras, é só inverter a expressão:

1º Exemplo: valida se o formato está dd/mm/yyyy



2º Exemplo valida se está neste formato: mm/dd/yyyy



(0[1-9]|[1-2][0-9]|3[0-1]) -> Aqui valida o dia com as seguintes ocorrências : 01 , 17 ou 31
(0[1-9]|1[0-2]) -> Aqui valida o mês com as seguintes ocorrências: 01 , 09 , 10 até 12
\\d{4} -> Valida o ano 2009 , 2010 com tamanho limitado a 4, bom ira demorar um pouco até chegarmos no ano de 20001


Entendi o que disse, mas como faço pra saber o formato da seguinte data: "12/12/2002", é "dd/MM/yyyy" ou é "MM/dd/yyyy"?

Vou colocar a classe... assim fica mais fácil de entender o meu contexto:



Entende o que estou tentando explicar... não sei como fazer pra tratar essas situações...

[]s

This message was edited 1 time. Last update was at 18/03/2009 12:27:11

[Email] [MSN]
LedRenan
Debugger

Membro desde: 13/05/2007 16:54:48
Mensagens: 72
Offline

Entendi o que disse, mas como faço pra saber o formato da seguinte data: "12/12/2002", é "dd/MM/yyyy" ou é "MM/dd/yyyy"?


Eu também estou com este mesmo problema. Não sei como identificar se o que está vindo é dia ou mês...Alguém tem alguma idéia???

Abs
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

12/11/2009 é 12 de novembro de 2009 ou 11 de dezembro de 2009?
[WWW]
eberson_oliveira
JavaGuru
[Avatar]

Membro desde: 16/01/2008 10:18:17
Mensagens: 206
Localização: Matão - SP
Offline

thingol wrote:12/11/2009 é 12 de novembro de 2009 ou 11 de dezembro de 2009?


Depende do formato...

Eu estava seguindo o exemplo que me passou... depois resolvi fazer um teste com ER, mas acho que não vai funcionar, pois não tenho como responder a sua pergunta sem saber o formato da data e acho que não conseguirei descobrir pelas expressões... correto?

Sabe dizer pq o setLenient não lançou excessão quando testei "01/12/08" no formato "dd/MM/yyyy"?

Não sei se ajuda, mas o meu java é o 4, a minha solução precisa ser em java 4.

[]s
[Email] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Em Java 1.4 é possível usar expressões regulares (ufa!). De fato, não tinha testado que mesmo com setLenient (false) o DateFormat aceita xx/xx/xx ou xx/xx/xxxx. Argh.

Bom, como há uma ambiguidade para várias datas - 11/12/2009 (11 de dezembro ou 12 de novembro?) nem sempre é possível determinar se o formato é dia/mês/ano ou mês/dia/ano, portanto é bom ver se você pode tratar isso de outra maneira.
[WWW]
ramilani12
GUJ Master
[Avatar]

Membro desde: 11/03/2005 01:23:30
Mensagens: 1944
Localização: Curitiba-PR
Offline

De onde vem essas datas?, vc nao poderia padronizar estes dois formatos na origem.
Origem entenda onde é criada a data.

my delicious|follow me|linkedin
[Email] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Outra coisa que é bem ambígua é você pegar um campo numérico e ver se o tal número representa um CPF ou CNPJ. Verifiquei que para 1/9 dos números, tanto os dígitos de verificação do CPF quanto os do CNPJ são compatíveis, então não é suficiente chutar que um número é um CPF se os dígitos de verificação do CPF baterem mas não os do CNPJ.
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team