js utils里常用的小工具(1)——计算星座和发表时间格式化

根据用户生日计算星座,用于展示性标签

/**
 *根据生日计算星座
 *
 * 
 * @param {Number} month
 * @param {Number} day
 * @returns String 所属星座
 */
 const getAstro=(month, day)=> {
  const s = '魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯'
  const arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
  return s.substr(month * 2 - (day < arr[month - 1] ? 2 : 0), 2)
}

console.log(getAstro(8,28))//=>处女

时间格式化为‘XXX前’:常用于文章/评论发布时间


/**
 *
 *
 * 
 * @param {String} timeStr 格式如'2019-2-10 10:22:24'
 * @param {Number} day
 * @returns String 刚刚,XX分钟前,XX小时前,XX天前...
 */
 const getDateDiff = timeStr => {
  timeStr = timeStr.replace(/-/g, '/') // 修复ios上计算时间返回NaN的bug

  const time = new Date(timeStr)
  const dateTimeStamp = time.getTime()
  // return dateTimeStamp
  let minute = 1000 * 60
  let hour = minute * 60
  let day = hour * 24
  let month = day * 30
  let year = month * 12
  let now = new Date().getTime()
  let diffValue = now - dateTimeStamp
  if (diffValue < 0) {
    return
  }
  let yearC = Math.floor(diffValue / year)
  let monthC = Math.floor(diffValue / month)
  let weekC = Math.floor(diffValue / (7 * day))
  let dayC = Math.floor(diffValue / day)
  let hourC = Math.floor(diffValue / hour)
  let minC = Math.floor(diffValue / minute)
  
  if (yearC >= 1) {
    return yearC + '年前'
  }
  if (monthC >= 1) {
    return monthC + '月前'
  }
  if (weekC >= 1) {
    return weekC + '周前'
  }
  if (dayC >= 1) {
    return dayC + '天前'
  }
  if (hourC >= 1) {
    return hourC + '小时前'
  }
  if (minC >= 1) {
    return minC + '分钟前'
  }
  return '刚刚'
}

console.log(getDateDiff('2019-2-10 12:23:24'))//=>4周前
发布了22 篇原创文章 · 获赞 0 · 访问量 2246

猜你喜欢

转载自blog.csdn.net/weixin_44156518/article/details/88377145