Estou com um problema na função fwDateAddDay, quando eu adiciono 45 dias a data 30/10/2012 está retornando a data 14/00/2013. Então pesquisando descobri que para trabalhar com data no Javascript devemos utilizar os meses de 0 a 11, que equivale de Janeiro a Dezembro conforme o site http://www.williamrufino.com.br/javascript-calculando-datas/. E realmente faz sentido, pois a data 30/10/2012, quando convertida ao objeto Date do Javascript, é na verdade 30 de novembro de 2012. Quando adicionamos 45 dias a essa data, o retorno é 14/00/2013, que na verdade é 14 de janeiro de 2012. Por isso fiz a alteração na função fwDateAddDay, para tratar essa situação e gostaria que vocês avaliasse e se for o caso homologa e incluir na próxima release.
Segue a função corrigida, os pontos marcados em vermelho foi o que eu alterei:
function fwDateAddDay(dateDmy,days,fieldId)
{
var delim;
var field;
days= days||1;
days = parseInt( days );
days--
if( days < 1 )
{
return dateDmy ;
}
if( fieldId )
{
field = jQuery("#"+fieldId);
dateDmy = field.val();
}
if( !dateDmy )
{
return null;
}
if( dateDmy.indexOf('/') )
{
aDate = dateDmy.split('/');
delim='/';
}
else if( dateDmy.indexOf('-') )
{
aDate = dateDmy.split('/');
delim = '-';
}
else
{
return null;
}
try
{
date = new Date();
date.setMonth(aDate[1]-1);
date.setFullYear(aDate[2]);
date.setDate(aDate[0]);
date.setDate( date.getDate() + days );
date = String(date.getDate()).pad(2,'0',0) +delim+String(date.getMonth()+1).pad(2,'0',0)+delim+date.getFullYear();
if( field )
{
field.val(date);
}
return date;
}
catch(e)
{
alert( e.message);
return null
}
}
Autor: Eduardo Cajueiro
22 comentários