js仿微信消息时间封装处理

 需求:后台传递的long类型的时间参数,需要在前端进行处理,按照不同的时间段进行区别显示。

export const JUST_NOW = 3000; //3s内
export const IN_SECOND = 1000 * 60; //一分钟
export const IN_MINUTE = 1000 * 60 * 60; //一小时
export const IN_HOUR = 1000 * 60 * 60 * 12; //12小时
export const IN_DAY = 1000 * 60 * 60 * 24 * 1; //1天
export const IN_MONTH = 1000 * 60 * 60 * 24 * 30; //1个月

export function updateTimeShow(time) {
  let localTime = new Date(); //当前系统时间
  let createTime = new Date(time) //消息创建时间
  let diff = localTime - createTime;
  if (diff <= JUST_NOW)
    return '刚刚';
  else if (diff <= IN_SECOND)
    return "1分钟内";
  else if (diff <= IN_MINUTE)
    return parseInt(diff / IN_SECOND) + '分钟前';
  else if (diff <= IN_MINUTE)
    return parseInt(diff / IN_MINUTE) + '小时前';
  else if (diff <= IN_HOUR * 2) {
    const list = createTime.toString().split(" ");
    const lastIndex = list[4].lastIndexOf(":")
    const realtime = list[4].toString().substring(0, lastIndex);
    return realtime;
  } else if (diff < IN_DAY * 7) {
    if (diff < IN_DAY) {
      return parseInt(diff / IN_HOUR) + '天前';
    }
    const t = createTime.toString().slice(0, 3);
    switch (t) {
      case "Mon":
        return '星期一';
      case "Tue":
        return '星期二';
      case "Wed":
        return '星期三';
      case "Thu":
        return '星期四';
      case "Fri":
        return '星期五';
      case "Sat":
        return '星期六';
      case "Sun":
        return '星期日';
    }
  } else if (diff < IN_MONTH*24) {
    const list = createTime.toString().split(" ");
    const month = list[1];
    var realtime = "";
    if (diff < IN_MONTH) {
      realtime += getNumberMonth(month);
    } else {
      realtime = list[3] + "-" + getNumberMonth(month);
    }
    return realtime + "-" + list[2];
  }
}

export function getNumberMonth(month) {
  switch (month) {
    case "Jan":
      return "1";
    case "Feb":
      return "2";
    case "Mar":
      return "3";
    case "Apr":
      return "4";
    case "May":
      return "5";
    case "June":
      return "6";
    case "July":
      return "7";
    case "Aug":
      return "8";
    case "Sept":
      return "9";
    case "Oct":
      return "10";
    case "Nov":
      return "11";
    case "Dec":
      return "12";
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值