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