4 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
用moment.js
var start = moment('2017-02-23');
var end = moment('2018-03-23');
end.diff(start, 'days'); // 393

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
這個(gè)其實(shí)是一個(gè)用戶體驗(yàn)問(wèn)題,
如果當(dāng)前月份是非閏年的2月,那么你如果零頭算出來(lái)是29,30,客戶就會(huì)覺(jué)得很奇怪,
如果你當(dāng)前月份是7月是31天的,你零頭算出來(lái)是30,客戶反而會(huì)覺(jué)得可以接受,
所以你可以根據(jù)當(dāng)前月份來(lái)決定最后28,29,30,31的這些零頭是否要進(jìn)位。。

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
var mons = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
function isLeapYear(year) {
var r = year / 100
if (r === parseInt(r)) {
r = year / 400
return r === parseInt(r)
}
r = year / 4
if (r === parseInt(r)) {
return true
}
return false
}
function getDaysOfMonth(month, year) {
if (month === 2 && isLeapYear(year)) {
return 29
}
return mons[month]
}
function getMonthsOfYear(year) {
if (isLeapYear(year)) {
return 366
}
return 365
}
function diff(s1, s2) {
var arr1 = s1.split('-').map(Number)
var arr2 = s2.split('-').map(Number)
var [year, month, day] = arr2.map((n, i) => n - arr1[i])
if (day < 0) {
day += getDaysOfMonth(arr2[1], arr2[0])
month--
}
if (month < 0) {
month += getMonthsOfYear(arr2[0])
year--
}
return [year, month, day]
}
var d1_str = '2017-3-11'
var d2_str = '2018-3-26'
console.log(diff(d1_str, d2_str))
添加回答
舉報(bào)