写在前面
今天有一个前端页面上的需求,要在前端计算出两个日期的差值天数。
一通百度后,发现并没有什么好的方式,如果大家有好的方式,希望大家可以分享给我学习一下。
目前前端计算时间的差值,就只能通过分割日期字符串,分别取出年份、月份、天数三个主要的值,如果是计算相差的小时数、分钟数,甚至是秒数,那就只能更细分一下了。
下面来看一下我的解决方案吧,大家可以针对性的参考一下。
计算两个时间的相差天数
声明两个时间点。
var startDate = '2021-11-15'; var endDate = '2021-12-15';
首先分割日期时间
var startDate = '2021-11-15'; var endDate = '2021-12-15'; var startDates = startDate.split('-'); var endDates = endDate.split('-');
随后我们通过js内置方法将字符串转成数字
var startDate = '2021-11-15'; var endDate = '2021-12-15'; var startDates = startDate.split('-'); var endDates = endDate.split('-'); var startDateYear = parseInt(startDates[0]); var startDateMonth = parseInt(startDates[1]); var startDateDay = parseInt(startDates[2]); var endDateYear = parseInt(startDates[0]); var endDateMonth = parseInt(startDates[1]); var endDateDay = parseInt(startDates[2]);
最后我们来计算一下相差的年、月、天
var startDate = '2021-11-15'; var endDate = '2021-12-15'; var startDates = startDate.split('-'); var endDates = endDate.split('-'); var startDateYear = parseInt(startDates[0]); var startDateMonth = parseInt(startDates[1]); var startDateDay = parseInt(startDates[2]); var endDateYear = parseInt(startDates[0]); var endDateMonth = parseInt(startDates[1]); var endDateDay = parseInt(startDates[2]); var year = endDateYear - startDateYear; var month = endDateMonth - startDateMonth; var day = endDateDay - startDateDay; //这里我没有处理闰年和不同月份的天数不同,大家可以自行补充上。 var total = day * 1 + month * 30 + year * 365;
最终计算出相差的天数并封装成方法供他人调用
function diff(startDate, endDate){ var startDates = startDate.split('-'); var endDates = endDate.split('-'); var startDateYear = parseInt(startDates[0]); var startDateMonth = parseInt(startDates[1]); var startDateDay = parseInt(startDates[2]); var endDateYear = parseInt(startDates[0]); var endDateMonth = parseInt(startDates[1]); var endDateDay = parseInt(startDates[2]); var year = endDateYear - startDateYear; var month = endDateMonth - startDateMonth; var day = endDateDay - startDateDay; //这里我没有处理闰年和不同月份的天数不同,大家可以自行补充上。 return day * 1 + month * 30 + year * 365; }
总结
以上就是如何计算两个时间的相差天数的解决方案了,大家还有什么更好的方案吗?