var inputDate = '20/4/2010'.split('/');
var dateFormatted = new Date(parseInt(inputDate[2]), parseInt(inputDate[1]), parseInt(inputDate[0]));
var expiryDate = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);
Este es el código Javascript que estoy utilizando para calcular una fecha de caducidad dada la fecha ingresada por el usuario. Actualmente, la fecha de caducidad es original date minus one day and original year minus X
.Restar días/meses/años desde un objeto Fecha
Los problemas con este código, en primer lugar, no tiene en cuenta las fechas no válidas. Por ejemplo, si la fecha suministrada por el usuario es '1/10/2010', la fecha de vencimiento será '0/10/2013' (suponiendo que la fecha de vencimiento sea de +3 años).
que podía hacer algo como: surgen
var inputDate = '20/4/2010'.split('/');
var day = parseInt(inputDate[0]);
var month = parseInt(inputDate[1]);
var year = parseInt(inputDate[2]);
if (day < 1)
{
if (month == ...)
{
day = 31
month = month - 1;
}
else
{
day = 30
month = month - 1;
}
}
var dateFormatted = new Date(parseInt(inputDate[2]), parseInt(inputDate[1]), parseInt(inputDate[0]));
var expiryDate = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);
Pero más problemas ... En primer lugar, el código se hace un poco complicado. En segundo lugar, este control debería hacerse en el día. y luego el mes. ¿Hay una manera más limpia y simple?
Además, hay una cierta circunstancia que implicaría la necesidad de calcular la fecha de caducidad hasta el 'fin de mes' para esa fecha. Por ejemplo:
Expiry date is: +3 years
User date is: '14/10/2010'
Expiry date is: '31/10/2013'
que estaba esperando la Date object
apoyaría estos cálculos, pero de acuerdo a https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date, no parece ...
momentjs.com hace más fácil de esta manera: http://momentjs.com/ – bernie2436