Você faz uma consulta ao banco de dados para alimentar um formulário de fornecedores. Inclui uma variável hidden para guardar a data atual (afinal, ela será o controle de fornecedores). Formata a data para dd/mm/yyyy… E depois descobre que o ColdFusion processa como mm/dd/yyyy. Já arrancou seus cabelos? Chingou, pesquisou, chorou, e nada adiantou? Então vamos à solução.
É comum para quem está começando na programação em CFML tratar objetos data como objetos número (ou seja, criando um
1. <cfparam name="”data”" default="#now()#">
2. <cfset data="#LSDateFormat(data,”dd/mm/yyyy”)#">
3. <cfset dia =" listGetAt(data,1,”/”)">
4. <cfset mes =" listGetAt(data,2,”/”)">
5. <cfset ano =" listGetAt(data,3,”/”)">
6. <cfset data =" createdatetime(ano,mes,dia,0,0,0)">
O que esse código faz? Bem, a linha 1 inicializa a variável “data” - caso não exista - com o valor da data de hoje (retornado pela função now() ). A linha 2 transforma essa data para o formato dia/mês/ano. As linhas 3, 4 e 5 partem cada valor da data em uma variável, ficando assim o dia na variável dia, mês na variável mes e ano na variável ano (me senti meio idiota detalhando isso :p).
E finalmente, a linha 6 junta tudo de novo, só que em um objeto data, que você pode usar onde precisar.
Até mesmo no <input type=”Hidden” name=”data” value=#data#>
Pronto, adeus problemas com funções de controle de data (como a famigerada DateAdd() ).
Espero que isso seja útil para você, assim como foi para mim!
Abraços.
Um comentário:
Por que assim cfset data =" createdatetime(ano,mes,dia,0,0,0)"
e não assim:
cfset data =" createdatetime(dia,mes,ano,0,0,0)"
O dia/mes/ano ao invés de ano/mes/dia
Postar um comentário