【两个日期时间之间的天数】

当前日期与目标日期间隔

前端开发中有时候会使用到当前日期与目标日期的的比较。
下面就是常用的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里面就不需要处理了。
以上的方法仅供参考,实际项目还是需要根据需求进行处理。

猜你喜欢

转载自blog.csdn.net/c1o2c3o4/article/details/130502559