Hoje me deparei com o seguinte problema em um formulário do Dynamics CRM quando informado o valor de data 20/10/2013, automaticamente o valor era alterado para 01/01/1970.
Estranhando o comportamento, fui atrás de onde ocorre o erro e encontrei esse trecho de código do js datetime.js
Mscrm.DateTimeUtility.$3d=function($p0,$p1,$p2){ if($p1===Sys.CultureInfo.CurrentCulture)return Date.parseLocale($p0,$p2); else if(Date._parse)return Date._parse($p0,$p1,[null,$p2]); return null };
Quando ele usa a função parseLocale(“20/10/2013″,”d”), onde $p0 = 20/10/2013 e $p2 = d. Quando ele realiza o parse ele vai para a data de 19/10/2013 e ai que começa os problemas.
Após ele executa a seguinte função
$d_4:function($p0){ var $v_0=$p0.getHours(),$v_1=new Date($p0.getDate()); if(!$v_0)return $p0; $v_0>12&&$v_0<=23&&$v_1.setDate($v_1.getDate()+1); for(var $v_2,$v_4,$v_5=0,$v_3=0; $v_3<3; $v_3++){ switch($v_3){ case 0:$v_5=25; break; case 1:case 2:$v_5=61; break } for($v_4=0; $v_4<$v_5; $v_4++){ $v_2=new Date($v_1.getFullYear(),$v_1.getMonth(),$v_1.getDate(),!$v_3?$v_1.getHours()-1:$v_1.getHours(),$v_3===1?$v_1.getMinutes()-1:$v_1.getMinutes(),$v_3===2?$v_1.getSeconds()-1:$v_1.getSeconds()); if($v_2.getDate()===$v_1.getDate())$v_1=$v_2; else $v_4=$v_5 } } return $v_1 }
Aqui ele vai executar $p0.getHours() com o valor 23 e gera uma nova data, somente com o dia do objeto $p0, com o dia (31/12/1969). Após ele valida se a hora está entre > 12 e <= 23 e como está ele acrescenta mais um dia da nova data gerada chegando ao 01/01/1970.
Abrimos um caso de suporte com a Microsoft. É um bug conhecido por eles, abaixo segue os passos para solução de contorno, pois a solução irá vir na próxima atualização, com o codinome Orion.
Solução de contorno:
Ajustar fuso horário do equipamento cliente para uma das seguinte opções:
1 – Desmarcar a opção ‘Automatically adjust clock for Daylight Saving Time’ para fuso horário (UTC-03:00) Brasilia:
2 – Alterar fuso horário para algum que não possua horário de verão, tal como (UTC -03:00), Buenos Aires:
Com isso resolvemos temporariamente o problema até que a atualização venha e corrija.
Frederik Speler”s Portfolio – Online Casino Spellen
Um adendo: acontece o mesmo problema para a data 19/10/2014. Salvou-me novamente! Valeu meu!
Também cheguei aqui por conta de 19/10/2014.
Obrigado pela dica.