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);
Il s'agit du code Javascript que j'utilise pour calculer une date d'expiration en fonction d'une date saisie par l'utilisateur. Actuellement, la date d'expiration est original date minus one day and original year minus X
.Soustraction de jours/mois/années d'un objet Date
Les problèmes avec ce code, tout d'abord, il ne prend pas en compte les dates non valides. Par exemple, si la date fournie par l'utilisateur est '1/10/2010', la date d'expiration sera '0/10/2013' (en supposant que la date d'expiration est +3 ans).
que je pouvais faire quelque chose comme:
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);
Mais plus de problèmes se posent ... Tout d'abord, le code est un peu alambiquée. Deuxièmement, cette vérification devrait être effectuée le jour même. et puis le mois. Y a-t-il un moyen plus propre et plus simple?
En outre, il y a une certaine circonstance qui impliquerait que je doive calculer la date d'expiration à la «fin du mois» pour cette date. Par exemple:
Expiry date is: +3 years
User date is: '14/10/2010'
Expiry date is: '31/10/2013'
J'espérais que le Date object
soutiendrait ces calculs mais selon https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date, il ne semble pas ...
momentjs.com rend ainsi plus facile: http://momentjs.com/ – bernie2436