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);
这是我用来计算给定用户输入日期的失效日期的Javascript代码。目前,有效期为original date minus one day and original year minus X
。从Date对象中减去日/月/年
这段代码的问题,首先它没有考虑到无效日期。例如,如果用户提供的日期是'2010年1月10日',则到期日期将是'0/10/2013'(假定到期日期为+3年)。
我可以做类似:出现
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);
但更多的问题......首先,该代码变得有点令人费解。其次,这项检查必须在当天完成。然后是月份。有更清洁,更简单的方法吗?
此外,还有一些情况需要计算到该日期的'月底'到期日。例如:
Expiry date is: +3 years
User date is: '14/10/2010'
Expiry date is: '31/10/2013'
我希望在Date object
将支持这些计算,但根据https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date,似乎不...
momentjs.com使得这种方式更容易:http://momentjs.com/ – bernie2436 2016-03-09 14:25:51