JS时间戳转聊天室消息时间显示的实现思路

开发聊天室难免会遇到显示发送消息时间的需求,如果在每条消息前加上完整时间显示的话,不仅影响阅读效率而且也不美观,所以造了一个轮子以备不时之需,废话不多少直接上代码

首先是转当日时间戳的方法也就是转成上下午,这里是模仿微信的时间显示,具体情况根据业务自行修改

/**
   * @static 时间戳转时间
   * @param {*} timestamp 时间戳
   * @returns
   * @memberof Tools
   */
  static formatTime (timestamp) {
    if (String(timestamp).length === 10) {
      timestamp *= 1000
    }
    let date = new Date(timestamp)
    let hour = date.getHours()
    console.log(hour)
    let minute = date.getMinutes()
    if (hour >= 0 && hour < 6) {
      return '凌晨 ' + [hour, minute].map(this.formatNumber).join(':')
    }
    if (hour >= 6 && hour < 12) {
      return '早上 ' + [hour, minute].map(this.formatNumber).join(':')
    }
    if (hour === 12) {
      return '中午 ' + [hour, minute].map(this.formatNumber).join(':')
    }
    if (hour > 12 && hour < 18) {
      return '下午 ' + [hour, minute].map(this.formatNumber).join(':')
    }
    if (hour >= 18 < hour < 24) {
      return '晚上' + [hour, minute].map(this.formatNumber).join(':')
    }

接下来是判断消息队列中当前时间的间隔以及是否为当天

    var timeStamp = (new Date()).getTime() / 1000; // 这里用不用除一千看后端给的时间戳长度
    if(Math.abs(msg.msgTime - timeStamp) < 300) { // 小于5分钟不显示
       msg.msgTime = '';  
    } else if(timeStamp - msg.msgTime  < 86400){ // 是否为当天
       timeStamp = msg.msgTime
       msg.msgTime = tools.formatTime(msg.msgTime)
    } else {
       timeStamp = msg.msgTime
       msg.msgTime = tools.formatFullTime(msg.msgTime) 
    }

赠送一个转完整时间的轮子

/**
   * @static 时间戳转完整时间
   * @param {Number} timestamp 时间戳
   * @param {Number} n 组合选择
   * @returns
   * @memberof Tools
   */
  static formatFullTime (timestamp, n = 1) {
    if (String(timestamp).length === 10) {
      timestamp *= 1000
    }
    let date = new Date(timestamp)
    let year = date.getFullYear()
    let month = date.getMonth() + 1
    let day = date.getDate()

    let hour = date.getHours()
    let minute = date.getMinutes()
    let second = date.getSeconds()

    if (n === 1) return [year, month, day].map(this.formatNumber).join('-') + ' ' + [hour, minute, second].map(this.formatNumber).join(':')
    if (n === 2) return [month, day].map(this.formatNumber).join('-') + ' ' + [hour, minute].map(this.formatNumber).join(':')
  }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值