判断两个日期之间的天数
当前日期与目标日期间隔
前端开发中有时候会使用到当前日期与目标日期的的比较。
下面就是常用的js方法。
需要注意的是 iOS系统有时候无法识别横杠格式的日期,需要转义成斜杠的日期,具体的写法下面也给出了解决方案。
两个日期之间的间隔
// 当前日期与目标日期相隔几天
export const getDiffDay = (date_1, date_2) => {
var totalDays = 0;
var diffDate = 0;
// 第一种写法 iOS系统无法识别带有横杠的日期(2022-09-09 12:09:11),在进行时间戳转化的时候会直接返回Nan。
// var myDate_1 = Date.parse(date_1);
// var myDate_2 = Date.parse(date_2);
// 第二种写法 将带有横杠的日期转化成斜杠的日期。这样再转成时间戳的时候 iOS系统就可以识别。
var myDate_1 = new Date(date_1.replace(/-/g, '/')).getTime();
var myDate_2 = new Date(date_2.replace(/-/g, '/')).getTime();
// 两个时间戳相减值
diffDate = Math.abs(myDate_1 - myDate_2) ;
// 判断当前日期与目标日期一致 返回0
if((myDate_1 - myDate_2) === 0){
totalDays = 0;
}
// 判断当前日期大于目标日期 返回-1
else if((myDate_1 - myDate_2) > 0){
totalDays = -1;
}
// 判断当前日期小于目标日期 返回具体天数
else{
totalDays = Math.floor(diffDate / (1000 * 3600 * 24));
}
console.log("间隔天数",totalDays);
return totalDays
}
获取当前日期
// 获取当前日期
export function getCurrentTime() {
var date = new Date();
var year = date.getFullYear(); //月份从0~11,所以加一
let month = date.getMonth();
// console.log("month",month);
var dateArr = [
date.getMonth() + 1,
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds(),
];
//如果格式是MM则需要此步骤,如果是M格式则此循环注释掉
for (var i = 0; i < dateArr.length; i++) {
if (dateArr[i] >= 1 && dateArr[i] <= 9) {
dateArr[i] = "0" + dateArr[i];
}
}
var strDate =
year +
"-" +
dateArr[0] +
"-" +
dateArr[1] +
" " +
dateArr[2] +
":" +
dateArr[3] +
":" +
dateArr[4];
//此处可以拿外部的变量接收 strDate:2022-05-01 13:25:30
// console.log("strDate",strDate);
return strDate;
}
上面的两个js方法可以写在公共的文件里面。
使用方法
在需要使用的文件里面引入js头文件。例如下面
// 引入头文件
import {getCurrentTime, getDiffDay} from '@/common/utils/Util'
// 我这边是直接在渲染里面使用,所以需要初始化一下。如果是方法里面使用就不需要这一步了。
mounted() {
this.getCurrentTime = getCurrentTime;
this.getDiffDay = getDiffDay;
}
// 页面渲染使用
<view class="coupon-item-balck" v-if="getDiffDay(getCurrentTime(),目标时间值) == 0"></view>
注意事项
例子里面是当前时间与目标时间相等进行的显示控件。
并且两个日期的格式都是 ‘2022-02-01 12:09:08’ 。
所以在上面的js方法里面做了统一处理。
如果实际项目里面日期格式已经是斜杠,那么js里面就不需要处理了。
以上的方法仅供参考,实际项目还是需要根据需求进行处理。