亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js前端如何實現根據兩個日期(例如2018-03-23)來算出其中間間隔幾個月零幾天?

js前端如何實現根據兩個日期(例如2018-03-23)來算出其中間間隔幾個月零幾天?

蝴蝶不菲 2019-03-14 18:15:24
問題陳述:js前端如何實現根據兩個日期(例如2018-03-23)來算出其中間間隔幾個月(月指的是自然月)零幾天?思考場景:就講其中一種場景 計算寶寶出生了幾個月零幾天 出生日期2017-02-23 當前日期 2018-03-23思考難點: 在其中一種情況下遇到如下問題:當出生年小于當前年&&出生月小于當前月 出生當月肯定不能算整月 后面的遍歷出生年月(從當月+1)開始 所以就是算剩幾天吧 (計算出整月有多少天然后減去出生天 就是去年零的幾天)當年零的幾天也是這么算。 好從這之前都沒問題 問題難點 是這兩個零幾天如果超過三十天 那怎么累加到之前的月份呢 按照什么條件? 30天一累加? 所以是不是沒有辦法解決?
查看完整描述

4 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

用moment.js


var start = moment('2017-02-23');

var end = moment('2018-03-23');

end.diff(start, 'days'); // 393


查看完整回答
1 反對 回復 2019-03-23
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

這個其實是一個用戶體驗問題,
如果當前月份是非閏年的2月,那么你如果零頭算出來是29,30,客戶就會覺得很奇怪,
如果你當前月份是7月是31天的,你零頭算出來是30,客戶反而會覺得可以接受,
所以你可以根據當前月份來決定最后28,29,30,31的這些零頭是否要進位。。

查看完整回答
反對 回復 2019-03-23
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

前端算其實也比較容易,其實樓上提出來的那個問題不大,如果按月來先減,再看日就不會有他說的那種問題。如果日有30天算一個月,就相對簡單了。


查看完整回答
反對 回復 2019-03-23
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

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))


查看完整回答
反對 回復 2019-03-23
  • 4 回答
  • 0 關注
  • 2280 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號