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);
Đây là mã Javascript tôi đang sử dụng để tính ngày hết hạn được cung cấp cho người dùng nhập ngày. Hiện tại, ngày hết hạn là original date minus one day and original year minus X
.Trừ ngày/tháng/năm từ đối tượng Ngày
Các vấn đề với mã này, trước tiên, nó không tính đến các ngày không hợp lệ. Ví dụ: nếu ngày được người dùng cung cấp là '1/10/2010', ngày hết hạn sẽ là '0/10/2013' (giả sử ngày hết hạn là +3 năm).
tôi có thể làm một cái gì đó như:
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);
Nhưng nhiều vấn đề phát sinh ... Thứ nhất, các mã được một chút phức tạp. Thứ hai, kiểm tra này sẽ phải được thực hiện trong ngày. và sau đó là tháng. Có cách nào sạch hơn, đơn giản hơn không?
Ngoài ra, có một trường hợp nhất định liên quan đến tôi cần tính ngày hết hạn cho đến cuối tháng đó cho ngày đó. Ví dụ:
Expiry date is: +3 years
User date is: '14/10/2010'
Expiry date is: '31/10/2013'
Tôi đã hy vọng các Date object
sẽ hỗ trợ những tính toán nhưng theo https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date, có vẻ như không ...
momentjs.com làm theo cách này dễ dàng hơn: http://momentjs.com/ – bernie2436