Jump to content

Recommended Posts

Posted

Boas a todos.

No meu HTML estou a recolher uma data da seguinte forma:

Data: <input type="date" name="boxdata">

Aqui não tenho qualquer problema, até porque a data que pede está em formato português: dd/mm/aaaa

Mas quando quero lá colocar um certa data se estiver em formato dd/mm/aaaa dá erro porque só aceita data em aaaa/mm/dd

Data: <input type="date" name="boxdata" value="<%=session("data")%>">

Isto obriga-me a mudar constantemente o formato da data.

Alguém sabe como ultrapassar este problema? Será alguma configuração no IIS?

Obrigado

Posted

O formato do input date nativo depende da língua do browser.

No valor vai estar em formato YYYY-MM-DD mas no input vai ser apresentado de acordo com a língua do browser.

O melhor é utilizar uma biblioteca de datepicker que te permita definir um formato igual para todos os browsers.

  • Vote 1
Posted

Por norma, o formato YYYY-MM-DD costuma ser conveniente para as linguagens de programação no servidor (pelo menos nas que usei).  Por isso, esperaria que não tivesses problemas a usar o input.  O maior inconveniente que vejo é depois garantir que todas as datas são apresentadas de forma consistente (com tags time e algum JavaScript também se deve resolver o problema, mas é pena que o HTML não suporte isto nativamente).

  • Vote 1
Posted

Obrigado pelas respostas / sugestões.

Vou ter de fazer uns testes e ver se é viável caso contrário continuo a usar o input type="text" como tenho usado até aqui e apenas necessito de converter para YYYY-MM-DD quando quero colocar na base de dados. desenvolvi uma função (data_para_post) que está na minha livraria principal.

Com o type="date" , quando passo o valor para dentro do input terei que transformar a data para YYYY-MM-DD e quando vou buscar o valor da data ao input terei de voltar a colocar em DD-MM-YYYY. É muita conversão.

Será que há algum método de trabalhar menos tendencioso a arranjar problemas?

Posted

A minha recomendação é para armazenares datas em tipos de dados destinados a esse propósito (e.g. date em Postgres, LocalDate em Java, datetime.date em Python).  Estes tipos de dados por norma também preferem o formato YYYY-MM-DD, o que é consistente com Javascript.

Nesta abordagem, a conversão para outro formato seria feita apenas na apresentação/UI.

 

Ainda assim, o input nativo pode não ser apropriado, pois à partida queres que a apresentação de datas faça match do locale da página (e.g. se tens um site em inglês, as datas devem ser apresentadas em inglês), enquanto que o formulário nativo irá ser ajustado ao locale do browser.  Por isso, continua a haver algum racional para usar um datepicker personalizável, como o @JakeBass sugeriu.  Mas mesmo neste caso, recomendo-te que armazenes as data em tipos próprios e no formato YYYY-MM-DD.

  • Vote 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.