Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Problema na função fwDateAddDay

30 de Outubro de 2012, 11:52 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado uma vez

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

Essa comunidade não possui posts nesse blog