2010-05-17 31 views
12

Tengo un campo de entrada que debe incrementarse en un mes utilizando el objeto JavaScript Date. A continuación se muestra un ejemplo de un esfuerzo que he hecho para aumentar el mes. El problema con esto parece ser que mostrará 0 como enero y no incrementa el año.Agregar un mes a una fecha en JavaScript

nDate.setDate(nDate.getDate()); 
inputBox1.value = (nDate.getMonth() + 1) + "/" + (nDate.getDate()) + "/" + (nDate.getFullYear()); 
+4

Pregunta: ¿Qué ocurre si esa fecha es 01/31/2010? Deseo ver 01/28/2010 o 03/03/2010? –

+1

Votando para volver a abrir ya que aparentemente es una pregunta real - 30k vistas, respuesta razonable con 24 votos ascendentes .... – Ben

+0

@ben Creo que su comentario asume que el mes tiene 30 días? – supersan

Respuesta

42
// assumes document.form1.textbox1.value is a parseable date 
var d = new Date(document.form1.textbox1.value); 
d.setMonth(d.getMonth() + 1); 
document.form1.textbox1.value = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear(); 

El mes configurado se supone que es a prueba de rango, como se describe en here.

+1

¿Qué hay de restar un mes? Es una lógica completamente diferente ... –

-5

Vas a tener que obtener el texto de la caja de texto, que luego se puede pasar al constructor Date():

var d = new Date(text);

a continuación, formatee la cadena de fecha:

var str = d.getDate(), d.getMonth() + 1, d.getFullYear()

Y establecer la caja de prueba a ese valor

+1

¿qué hay de diciembre -> enero – leora

+0

Hmm, pensé que se rodó, pero tal vez tendrá que comprobarlo explícitamente. O podría haber una forma mejor completamente –

+0

No entiendo su línea cómo está creando una fecha, parece que creará algo así como 30, 4, 1002 – leora