js封装时间相关函数(倒计时,时间戳,判断是否超时)

倒计时

/**
 * 计算两个时间段之间的毫秒差值
 * @param {*} date1 当前时间
 * @param {*} date2 未来某个时间
 */
export function djs(date1, date2) {
  const ms = date2 - date1;
  const ss = ms / 1000;
  const days = parseInt(ss / 60 / 60 / 24, 10);
  const hours = parseInt((ss / 60 / 60) % 24, 10);
  const minutes = parseInt((ss / 60) % 60, 10);
  const seconds = parseInt((ms / 1000) % 60, 10);
  return {
    days,
    hours,
    minutes,
    seconds,
  };
}
/**
 * 缺0补0,长度统一
 * @param {*} num 待处理的数字
 * @param {*} length 希望的倒计时长度
 */
export function fix(num, length) {
  return num.toString().length < length ? `0${num}` : num;
}
/**
 * 倒计时
 * @param {*} data 未来的时间,格式"2020-2-11 17:37:00"
 * @param {*} day 填写天的那个元素的id名
 * @param {*} hour 填写小时的那个元素的id名
 * @param {*} minute 填写分钟的那个元素的id名
 * @param {*} second 填写秒的那个元素的id名
 * @param {*} node 当倒计时完成,需要删除的元素的class名
 * 注意ipone不识别"2020-02-13 11:16:00"中的横杠。识别/
 */
export function countDown(data, day, hour, minute, second, node) {
  const timer = setInterval(() => {
    const date1 = new Date();
    const reg = new RegExp('-', 'g');
    const a = data.replace(reg, '/');
    const date2 = new Date(a);
    const time = djs(date1, date2);
    let { days } = time;
    let { hours } = time;
    let { minutes } = time;
    let { seconds } = time;
    days = fix(days, 2);
    hours = fix(hours, 2);
    minutes = fix(minutes, 2);
    seconds = fix(seconds, 2);
    console.log(days, hours, minutes, seconds);

    if (days > 0 || hours > 0 || minutes > 0 || seconds > 0) {
      document.getElementById(day).innerHTML = days;
      document.getElementById(hour).innerHTML = hours;
      document.getElementById(minute).innerHTML = minutes;
      document.getElementById(second).innerHTML = seconds;
    } else {
      clearInterval(timer);
      const element = document.getElementsByClassName(node)[0];
      element.parentNode.removeChild(element);
    }
  }, 1000);
}

时间戳转换

/**
 * 日期格式转换
 * @param {*} val 日期字符串
 */
export function ChangeDateFormat(val) {
  if (val != null) {
    const date = new Date(parseInt(val.replace("/Date(", "").replace(")/", ""), 10));
    // 月份为0-11,所以+1,月份小于10时补个0
    const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;
    const currentDate = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();
    const hour = date.getHours() < 10 ? `0${date.getHours()}` : date.getHours();
    const minute = date.getMinutes() < 10 ? `0${date.getMinutes()}` : date.getMinutes();
    const second = date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds();
    const dd = `${date.getFullYear()}-${month}-${currentDate} ${hour}:${minute}:${second}`;
    return dd;
  }
  return "";
}

设置两分钟,判断是否超时函数

/**
 * minute分钟内是否有效
 * @param {*} val 时间
 */
export function alterTimer(val,minute) {
  if (val != null) {
    const date = new Date(val);
    date.setMinutes(date.getMinutes() + minute);
    return date.getTime() > new Date();
  }
  return false;
}
// 判断当前时间是否是val这个时间后的days天外
checkTime (val,days) {
   const date=new Date(val);
   date.setDate(date.getDate()+days);
   return new Date() > date.getTime();
},
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值