时间转化工具类

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

// 时间戳转化为年月日
function tsFormatTime(timestamp, format) {
  if (!timestamp) return 0
  const formateArr = ['Y', 'M', 'D', 'h', 'm', 's']
  let returnArr = []
  const date = new Date(timestamp * 1000)
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()
  returnArr.push(year, month, day, hour, minute, second)
  returnArr = returnArr.map(formatNumber)
  for (let i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i])
  }
  return format
}

// 倒序时间
function beforeTime(dateTimeStamp) {
  let lang = wx.getStorageSync('language');
  if (lang === 'en-us') {
    var beforeYear = ' Years ago',
      beforeMouth = ' Months ago',
      beforeWeek = ' Weeks ago',
      beforeDay = ' Days ago',
      beforeHour = ' Hours ago',
      beforMinute = 'Minutes ago',
      beforeJust = 'just';
  } else {
    var beforeYear = '年前',
      beforeMouth = '月前',
      beforeWeek = '周前',
      beforeDay = '天前',
      beforeHour = '小时前',
      beforMinute = '分钟前',
      beforeJust = '刚刚';
  }

  var newDateTimeStamp = dateTimeStamp * 1000;
  var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
  var hour = minute * 60;
  var day = hour * 24;
  var week = day * 7;
  var halfamonth = day * 15;
  var month = day * 30;
  var year = day * 365;
  var now = new Date().getTime(); //获取当前时间毫秒
  // console.log(now);
  var diffValue = now - newDateTimeStamp; //时间差

  if (diffValue < 0) {
    return;
  }
  var minC = diffValue / minute; //计算时间差的分,时,天,周,月
  var hourC = diffValue / hour;
  var dayC = diffValue / day;
  var weekC = diffValue / week;
  var monthC = diffValue / month;
  var yearC = diffValue / year;
  var result;
  if (yearC >= 1) {
    result = " " + parseInt(yearC) + beforeYear;
  } else if (monthC >= 1 && monthC <= 12) {
    result = " " + parseInt(monthC) + beforeMouth;
  } else if (weekC >= 1 && weekC <= 4) {
    result = " " + parseInt(weekC) + beforeWeek;
  } else if (dayC >= 1 && dayC <= 7) {
    result = " " + parseInt(dayC) + beforeDay;
  } else if (hourC >= 1 && hourC <= 24) {
    result = " " + parseInt(hourC) + beforeHour;
  } else if (minC >= 1 && minC <= 60) {
    result = " " + parseInt(minC) + beforMinute;
  } else if (diffValue >= 0 && diffValue <= minute) {
    result = beforeJust;
  } else {
    var datetime = new Date();
    datetime.setTime(newDateTimeStamp);
    var Nyear = datetime.getFullYear();
    var Nmonth =
      datetime.getMonth() + 1 < 10 ?
      "0" + (datetime.getMonth() + 1) :
      datetime.getMonth() + 1;
    var Ndate =
      datetime.getDate() < 10 ?
      "0" + datetime.getDate() :
      datetime.getDate();
    var Nhour =
      datetime.getHours() < 10 ?
      "0" + datetime.getHours() :
      datetime.getHours();
    var Nminute =
      datetime.getMinutes() < 10 ?
      "0" + datetime.getMinutes() :
      datetime.getMinutes();
    var Nsecond =
      datetime.getSeconds() < 10 ?
      "0" + datetime.getSeconds() :
      datetime.getSeconds();
    result = Nyear + "-" + Nmonth + "-" + Ndate;
  }
  return result;
}

// 聊天时间戳处理
function chatTime(dateTimeStamp) {
  let lang = wx.getStorageSync('language');
  if (lang === 'en-us') {
    var beforMinute = 'Minutes ago',
      beforeJust = 'just';
  } else {
    var 
      beforMinute = '分钟前',
      beforeJust = '刚刚';
  }
  var newDateTimeStamp = dateTimeStamp * 1000;
  var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
  var hour = minute * 60;
  var day = hour * 24;
  var week = day * 7;
  var halfamonth = day * 15;
  var month = day * 30;
  var year = day * 365;
  var now = new Date().getTime(); //获取当前时间毫秒
  // console.log(now);
  var diffValue = now - newDateTimeStamp; //时间差
  if (diffValue < 0) {
    return;
  }
  var minC = diffValue / minute; //计算时间差的分,时,天,周,月
  var hourC = diffValue / hour;
  var dayC = diffValue / day;
  var weekC = diffValue / week;
  var monthC = diffValue / month;
  var yearC = diffValue / year;
  var result;

  if (dayC >= 1) {
    result = tsFormatTime(dateTimeStamp, 'Y/M/D h:m:s'); // 如果时间相差一天转化为年月日格式
  } else if (hourC >= 1 && hourC <= 24) {
    result = tsFormatTime(dateTimeStamp, 'h:m:s');
  } else if (minC >= 1 && minC <= 60) {
    result = " " + parseInt(minC) + beforMinute;
  } else if (diffValue >= 0 && diffValue <= minute) {
    result = beforeJust;
  } else {
    var datetime = new Date();
    datetime.setTime(newDateTimeStamp);
    var Nyear = datetime.getFullYear();
    var Nmonth =
      datetime.getMonth() + 1 < 10 ?
      "0" + (datetime.getMonth() + 1) :
      datetime.getMonth() + 1;
    var Ndate =
      datetime.getDate() < 10 ?
      "0" + datetime.getDate() :
      datetime.getDate();
    var Nhour =
      datetime.getHours() < 10 ?
      "0" + datetime.getHours() :
      datetime.getHours();
    var Nminute =
      datetime.getMinutes() < 10 ?
      "0" + datetime.getMinutes() :
      datetime.getMinutes();
    var Nsecond =
      datetime.getSeconds() < 10 ?
      "0" + datetime.getSeconds() :
      datetime.getSeconds();
    result = Nyear + "-" + Nmonth + "-" + Ndate;
  }
  return result;
}

export {
  beforeTime,
  chatTime
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值