Hola usuario de nuestra página, hemos encontrado la solución a lo que estabas buscando, deslízate y la encontrarás más abajo.
Solución:
Simplemente está reduciendo los valores de un número. Entonces, restar 6 de 3 (fecha) devolverá solo -3.
Debe agregar/eliminar individualmente la unidad de tiempo en el objeto de fecha
var date = new Date();
date.setDate( date.getDate() - 6 );
date.setFullYear( date.getFullYear() - 1 );
$("#searchDateFrom").val((date.getMonth() ) + '/' + (date.getDate()) + '/' + (date.getFullYear()));
Como otros han dicho, está restando de los valores numéricos devueltos por métodos como date.getDate()
, debe restablecer esos valores en su variable de fecha. He creado un método a continuación que hará esto por usted. Crea una fecha usando new Date()
que se inicializará con la fecha actual, luego establece la fecha, el mes y el año de acuerdo con los valores pasados. Por ejemplo, si desea retroceder 6 días, pase -6 así var newdate = createDate(-6,0,0)
. Si no desea establecer un valor, pase un cero (o puede establecer valores predeterminados). El método le devolverá la nueva fecha (probado en Chrome y Firefox).
function createDate(days, months, years)
var date = new Date();
date.setDate(date.getDate() + days);
date.setMonth(date.getMonth() + months);
date.setFullYear(date.getFullYear() + years);
return date;
Recomiendo usar las bibliotecas MomentJS. Hacen que todas las interacciones con las fechas sean mucho más simples.
Si usa Moment, su código sería tan simple como esto:
var today = moment();
var nextMonth = today.add('month', 1);
// note that both variables `today` and `nextMonth` refer to
// the next month at this point, because `add` mutates in-place
Puede encontrar MomentJS aquí: http://momentjs.com/
ACTUALIZAR:
En JavaScript, la función Date.getDate() devuelve el día actual del mes del 1 al 31. Está restando 6 de este número, y actualmente es el 3 del mes. Esto lleva el valor a -3.