2011-05-08 12 views
11

tengo una fecha en el formato (dd/mm/aa) y quieren añadir 30 días a la misma. Solo tengo curiosidad por el mejor método para hacer esto? Soy nuevo en JavaScript, así que los ejemplos serían útiles.30 días hasta la fecha (dd/mm/aa)

EDITADO

En este momento estoy usando el formato de fecha (dd/mm/aa) de Estados Unidos.

Respuesta

34

Basta con añadir 30 días a la fecha de hoy:

var now = new Date(); 
now.setDate(now.getDate() + 30); 

Sin embargo, es eso lo que realmente quiere hacer? ¿O quieres obtener hoy más un mes?

Puede convertir ad/m/día y a un objeto de fecha usando:

var dString = '9/5/2011'; 
var dParts = dString.split('/'); 
var in30Days = new Date(dParts[2] + '/' + 
         dParts[1] + '/' + 
         (+dParts[0] + 30) 
       ); 

Para los Estados Unidos formato de fecha, partes de swap 0 y 1:

var in30Days = new Date(dParts[2] + '/' + 
         dParts[0] + '/' + 
         (+dParts[1] + 30) 
       ); 

pero es mejor conseguir la fecha en un formato ISO8601 antes de dársela a la función, realmente no debería mezclar el análisis de fecha y la aritmética en la misma función. Una función integral de análisis de fechas es compleja (no excesivamente, pero son tediosamente largas y necesitan muchas pruebas), la aritmética es bastante simple una vez que tiene un objeto de fecha.

+0

Se necesitaría para hacer un poco más de trabajo para crear la fecha o bject usando el formato de fecha no estadounidense en la pregunta. – Phil

+0

No, yo no. Lo anterior crea una cadena de fecha de formato ISO8601, que el objeto Fecha de ECMAScript analiza de forma predeterminada. Hubo un pequeño error en el original no relacionado con el formato, pero lo he editado desde entonces. :-) – RobG

+0

@RobG me refería a analizar la cadena de fecha no estadounidense para ajustar el tiempo inicial objeto Date (* ed: Parece que tienes lo que quería decir *) ;-) – Phil

8

Una manera sencilla de lograr que se haga es enviar el valor de marca de tiempo en el Date constructor. Para el cálculo de los 30 días medidos en marca de tiempo:

30 * 24 * 60 * 60 * 1000

Entonces, es necesario la fecha y hora actual:

Date.now()

Finalmente, suma los dos valores y enviar el resultado como un parámetro en el constructor:

var nowPlus30Days = new Date(Date.now() + (30 * 24 * 60 * 60 * 1000));

+0

var nowPlus30Days = new Date (Date.now() + 30 * 24 * 60 * 60 * 1000) .toJSON(). Slice (0,10); – Zerubbabel

Cuestiones relacionadas