为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 2344 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号