js--计算两个时间相差几年、几月、几日
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--计算两个时间相差几年、几月、几日相关推荐
- js计算两个时间相差的年、月、日、时、分、秒。
/* 时间格式:2016-8-31 10:35:00 或 2016/8/31 10:35:00 */ var dateObj=dayCha('2016-8-17','2019-6-30') //执行方 ...
- JS计算两个时间相差多久,相差年,月,日,小时,分钟
计算一个时间戳距离当前的时间,例如: 几年前,几个月前,几天前,几小时前,几分钟前,刚刚. 输出效果 代码: function getDistanceDay(time) {let stime = ne ...
- js计算两个时间相差月份
>约束:结束时间endTime>开始时间startTime >思路:之前总是会遗漏掉很多种情况,所以列举出各种情况,发现其规律: 1.年-月:(endTime.getYear()-s ...
- js计算两个时间相差的天数
方法一 <script>function DateDiff(end){today = new Date(); end = new Date(end);if(end > today){ ...
- java如何计算时间天数差,java计算两个时间相差天数的方法汇总
问题描述: 输入:两个日期 输出:两个日期相差的天数 具体代码实现 方法1: 通过calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 年份是 ...
- java获取时间戳(计算两个时间相差几天几小时几秒,获取当前日期是周几。。。)
java时间相关 博主所有博客都是验证过的 获取一个时间的时间戳 //获取当前时间戳Calendar cal1 = Calendar.getInstance();cal1.setTime(new Da ...
- java计算两个时间相差几个月
//计算两个时间相差几个月public int getMonth(Date start, Date end) {if (start.after(end)) {Date t = start;start ...
- 在线计算两个时间相差多少秒,分钟,天
在线计算两个时间相差多少秒,分钟,天 在线计算两个时间相差多少秒,分钟,天 本工具支持对两个格式过后的时间计算相差的天数,小时数,分钟数,秒数,毫秒数. 本工具支持对两个格式过后的时间计算相差的天数, ...
- JS 计算两个时间的间隔
js 计算两个时间之间间隔的天数 var start = new Date('2019-12-10'); //开始的时间 var end = new Date('2020-01-09'); //结束的 ...
- mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
最新文章
- 【opencv】(4) 形态学处理:腐蚀膨胀、梯度运算、礼帽黑帽
- 双屏全屏跳回到主屏_双屏双倍乐趣?华硕灵耀X2 Duo笔记本评测
- boost::math::differentiation用法的测试程序
- VTK:网格之FillHoles
- Docker相关的项目
- java多线程并行执行命令_深入理解Java多线程与并发框(第④篇)——重排序、屏障指令、as-if-serial规则...
- jQuery Mobile滚动事件
- npm ERR! y@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`
- php huoqv 多选,镊噍虫刻蘖舌#joquycg
- 智能云服务器选型,智能主机概述、选型及应用
- python 基于numpy的线性代数运算
- md格式的文档转化成pdf格式
- 灵动微电子MM32L0系列芯片做呼吸灯功能
- Python IDLE编写代码 输入反斜杠\显示为人民币符号¥
- Luat实现uart串口通信
- android视频gif编辑器,GIF制作编辑
- java 由低位到高位倒序输出
- nz-table数据动态横向合并
- bzoj3055 礼物运送(Floyd+状压dp)
- xxl-job The access token is wrong.