1、计算两个日期之间相差几年、几月、几日,封装函数


/*** 计算 当前时间 和传入时间 间隔 几年几月几日, 并返回相应格式* @param val*/export function setCompareRegistrationTimeText(startDate, endDate) {// if (!val) {//   this.ruleForm.compareRegistrationTimeText = '--'//   return// }const date = new Date(startDate) // 转换时间格式const year = date.getFullYear() // 取当年的年const month = date.getMonth() + 1 // 取当年的月(月份加一)const dd = date.getDate() // 取当年的日期const nowDate = new Date(endDate) // 取现在的时间const nowYear = nowDate.getFullYear() // 取现在的年const nowMonth = nowDate.getMonth() + 1 // 取现在的月(月份加一)const nowDd = nowDate.getDate() // 取现在的日期/*** 日期计算(结束 - 开始)* 1-1当差值为正,就相差多少天* 1-1-1例如: (2021/3/15 - 2022/4/18) ===== 18-15 > 0 日期相差3天* 1-2当差值为负,计算从开始时间的日期到结束时间的日期相差几天* 1-2-1例如:(2021/3/15 - 2022/4/10) ===== 10-15 < 0* 其实就是计算从3/15 到 4、10号中间过了多少天* 1-2-1-1:方法: 其实就是计算3/15 到 3/31 号过了多少天,再加上 4月过的10天*/const restDd =nowDd - dd < 0 ? lastDay(nowMonth - 1, year) - dd + nowDd : nowDd - dd/*** 月份计算(结束 - 开始)* 1-1当差值为正,就相差多少月* 1-1-1例如: (2021/3/15 - 2022/4/18) ===== 4-3 > 0 月份相差1月* 1-2当差值为负,计算从开始时间的月份到结束时间的月份相差几天* 1-2-1例如:(2021/5/15 - 2022/4/10) ===== 4-5 < 0* 其实就是计算从5月到第二年4月过了多少月* 1-2-1-1:方法: 向年借一年为12月计算过了多少月*/const restMonth =nowMonth - month < 0 ? 12 + nowMonth - month : nowMonth - month/*** 年份计算(结束 - 开始)* 直接限制结束比开始大,只有0/正数*/const restYear = nowYear - year/*** 计算借位的问题*/let resultMonth = restMonthlet resultYear = restYear// 日期小说明借了月if (nowDd < dd) {resultMonth = restMonth - 1 < 0 ? restMonth - 1 + 12 : restMonth - 1}// 月份小借了年 或者 日期小,月份刚好一致,因为日期借了月份,导致月份减1,所以减年if (nowMonth < month || (nowDd < dd && nowMonth === month)) {resultYear = restYear - 1}let str = {year: resultYear,month: resultMonth,day: restDd}return str
}
/*** 判断每年的每个月的最后一天是几号* @param mo-月份* @param year-年份* @returns {number}*/
export function lastDay(mo, year) {if (mo === 4 || mo === 6 || mo === 9 || mo === 11) {return 30}//2月else if (mo === 2) {if (isLeapYear(year)) {return 29} else {return 28}}//大月else {return 31}
}
/*** 判断是否是闰年* @param Year-年份* @returns {boolean}*/
export function isLeapYear(Year) {return (Year % 4 === 0 && Year % 100 !== 0) || Year % 400 === 0
}

2.调用函数

 let data = setCompareRegistrationTimeText('2022-11-10','2024-11-10')console.log(data, '返回的数据')

js--计算两个时间相差几年、几月、几日相关推荐

  1. js计算两个时间相差的年、月、日、时、分、秒。

    /* 时间格式:2016-8-31 10:35:00 或 2016/8/31 10:35:00 */ var dateObj=dayCha('2016-8-17','2019-6-30') //执行方 ...

  2. JS计算两个时间相差多久,相差年,月,日,小时,分钟

    计算一个时间戳距离当前的时间,例如: 几年前,几个月前,几天前,几小时前,几分钟前,刚刚. 输出效果 代码: function getDistanceDay(time) {let stime = ne ...

  3. js计算两个时间相差月份

    >约束:结束时间endTime>开始时间startTime >思路:之前总是会遗漏掉很多种情况,所以列举出各种情况,发现其规律: 1.年-月:(endTime.getYear()-s ...

  4. js计算两个时间相差的天数

    方法一 <script>function DateDiff(end){today = new Date(); end = new Date(end);if(end > today){ ...

  5. java如何计算时间天数差,java计算两个时间相差天数的方法汇总

    问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...

  6. java获取时间戳(计算两个时间相差几天几小时几秒,获取当前日期是周几。。。)

    java时间相关 博主所有博客都是验证过的 获取一个时间的时间戳 //获取当前时间戳Calendar cal1 = Calendar.getInstance();cal1.setTime(new Da ...

  7. java计算两个时间相差几个月

    //计算两个时间相差几个月public int getMonth(Date start, Date end) {if (start.after(end)) {Date t = start;start ...

  8. 在线计算两个时间相差多少秒,分钟,天

    在线计算两个时间相差多少秒,分钟,天 在线计算两个时间相差多少秒,分钟,天 本工具支持对两个格式过后的时间计算相差的天数,小时数,分钟数,秒数,毫秒数. 本工具支持对两个格式过后的时间计算相差的天数, ...

  9. JS 计算两个时间的间隔

    js 计算两个时间之间间隔的天数 var start = new Date('2019-12-10'); //开始的时间 var end = new Date('2020-01-09'); //结束的 ...

  10. mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

最新文章

  1. 【opencv】(4) 形态学处理:腐蚀膨胀、梯度运算、礼帽黑帽
  2. 双屏全屏跳回到主屏_双屏双倍乐趣?华硕灵耀X2 Duo笔记本评测
  3. boost::math::differentiation用法的测试程序
  4. VTK:网格之FillHoles
  5. Docker相关的项目
  6. java多线程并行执行命令_深入理解Java多线程与并发框(第④篇)——重排序、屏障指令、as-if-serial规则...
  7. jQuery Mobile滚动事件
  8. npm ERR! y@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`
  9. php huoqv 多选,镊噍虫刻蘖舌#joquycg
  10. 智能云服务器选型,智能主机概述、选型及应用
  11. python 基于numpy的线性代数运算
  12. md格式的文档转化成pdf格式
  13. 灵动微电子MM32L0系列芯片做呼吸灯功能
  14. Python IDLE编写代码 输入反斜杠\显示为人民币符号¥
  15. Luat实现uart串口通信
  16. android视频gif编辑器,GIF制作编辑
  17. java 由低位到高位倒序输出
  18. nz-table数据动态横向合并
  19. bzoj3055 礼物运送(Floyd+状压dp)
  20. xxl-job The access token is wrong.

热门文章

  1. JS实现表格增、删、排序
  2. 编译原理实验 -- 文法分析
  3. 2020前端工程师的发展前景
  4. 数值分析(二) 三次样条插值法matlab程序
  5. 用Ps将PSD切片并将切片保存为透明背景的图片
  6. 函数式编程语言的入门级了解
  7. at91sam9260ek的板级、irq初始化-小试牛刀
  8. web前端开发可以从事哪些工作
  9. CVPR 2020 开幕!最佳论文奖等揭晓!
  10. 红米5双清_红米手机双清方法