• 小程序仿微信时间处理


    人狠话不多,直接上代码:

    // util.js页面,封装的公共方法
    /**
     * 仿微信时间处理
     * time:时间格式'2020-01-15'或'2020/01/15'或'2020-01-15 15:00'或'2020/01/15 15:00'
     * yStr:日期拼接格式,默认'/'拼接
     * isHours:是否显示时分,默认不显示
     */
    function updateTimeShow(time, yStr = "/", isHours = false) {
      time = time.replace(/-/g, '/'); //苹果真机不支持-连接得日期,所以要转成/链接得日期
      const JUST_NOW = 3000;                        //3s内
      const IN_SECOND = 1000 * 60;                  //一分钟
      const IN_MINUTE = 1000 * 60 * 60;             //一小时
      const IN_HOUR = 1000 * 60 * 60 * 12;          //12小时
      const IN_DAY = 1000 * 60 * 60 * 24 * 1;       //24小时
      const IN_MONTH = 1000 * 60 * 60 * 24 * 30;    //1个月
      const IN_YEAR = 1000 * 60 * 60 * 24 * 30 * 12;//1年
    
      var realtime = '', //最终返回的时间
        localTime = new Date(), //当前系统时间,世界标准时间  
        localDay = (localTime.getDate() < 10) ? ('0' + localTime.getDate()) : localTime.getDate(), //当天系统天数,就是几号
        localMsec = new Date().getTime(), //当前系统时间,毫秒数  
        createTime = new Date(time), //传入的时间,世界标准时间   
        createMsec = new Date(time).getTime(), //消息创建时间,毫秒数  
        diff = localMsec - createMsec, //计算出来得时间戳
        list = new Date(time).toString().split(" "), //将后台返回得时间分割,用于取年月日时分
        year = list[3], //
        month = getNumberMonth(list[1]), //
        day = list[2], //
        hhmmss = list[4].split(':'), //[时:分:秒]
        hourSec = hhmmss[0] + ':' + hhmmss[1]; //时分
    
      if (diff <= IN_SECOND) { //小于1分钟,显示刚刚
        return '刚刚';
      } else if (diff <= IN_MINUTE && diff > IN_SECOND) { //小于1小时,显示几分钟前
        return parseInt(diff / IN_SECOND) + '分钟前';
      } else if ((diff <= IN_DAY) && (localDay == day)) { //当天小于1天,显示时分
        return realtime = hourSec;
      } else if ((diff <= IN_DAY) && (localDay - day == 1)) { //昨天当天24小时内,显示月日
        return realtime = month + yStr + day;
      } else if ((diff > IN_DAY && diff <= IN_DAY * 2) && (localDay - day <= 1)) { //大于1天&小于2天,显示昨天
        return '昨天  ' + hour + ':' + second;
      } else if ((diff < IN_DAY * 7) && isSameWeek(time)) { //本周时间内小于7天,显示周几+时间
        const t = createTime.toString().slice(0, 3);
        switch (t) {
          case "Mon":
            return '周一 ' + hourSec;
          case "Tue":
            return '周二 ' + hourSec;
          case "Wed":
            return '周三 ' + hourSec;
          case "Thu":
            return '周四 ' + hourSec;
          case "Fri":
            return '周五 ' + hourSec;
          case "Sat":
            return '周六 ' + hourSec;
          case "Sun":
            return '周日 ' + hourSec;
        }
      } else if (diff < IN_YEAR) { //小于1年,显示月日
        if (isHours) { //显示时分
          realtime = month + yStr + day + ' ' + hourSec;
        } else { //不显示时分
          realtime = month + yStr + day;
        }
        return realtime;
      } else if (diff > IN_YEAR) { //大于一年,显示年月日
        return realtime = year + yStr + month + yStr + day;
      }
    }
    
    /**
     * 月份转化
     */
    function getNumberMonth(month) {
      switch (month) {
        case "Jan":
          return "01";
        case "Feb":
          return "02";
        case "Mar":
          return "03";
        case "Apr":
          return "04";
        case "May":
          return "05";
        case "Jun":
          return "06";
        case "Jul":
          return "07";
        case "Aug":
          return "08";
        case "Sep":
          return "09";
        case "Oct":
          return "10";
        case "Nov":
          return "11";
        case "Dec":
          return "12";
      }
    }
    
    /**
     * 判断两个日期是否为同一周
     *  因为1970年1月1 是周4   所以(天数+4)/7 取整 就是周数  如果相同就是同一周反之就不是
    经过测试,是以星期一作为每周的第一天的
     */
    function isSameWeek(now) {
      var oneDayTime = 1000 * 60 * 60 * 24;
      var old_count = parseInt(new Date().getTime() / oneDayTime);
      var now_other = parseInt(new Date(now).getTime() / oneDayTime);
      // console.log('old周', old_count, 'now周', now_other)
      return parseInt((old_count + 4) / 7) == parseInt((now_other + 4) / 7);
    }
    
    // 这个属性是将方法名暴露出来,否则需要引用的页面取不到
    module.exports = {
      updateTimeShow,
    }
     1 // pages/index/index.js
     2 const util = require('../../utils/util.js');
     3 Page({
     4 
     5     data: {
     6         time: '',  //处理后的日期
     7     },
     8 
     9       /**
    10    * 生命周期函数--监听页面加载
    11    */
    12   onLoad: function (options) {
    13     this.setData({
    14       time: '转换后的日期::' + util.updateTimeShow('2020-01-15 14:00')
    15     })
    16   },
    17 
    18 })
  • 相关阅读:
    Android防止手动添加的本地库文件被NDK工具清理掉
    将驱动编译进Linux内核
    cocos2d-x入门学习笔记——Hello world分析
    linux内核开发入门学习
    makefile工程管理
    GDB程序调试工具
    ios学习笔记_20140308
    Mac Os学习笔记-下载黑屏
    时间过得好快
    做一个关于预防接种的app
  • 原文地址:https://www.cnblogs.com/rzsyztd/p/12206728.html
Copyright © 2020-2023  润新知