• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序仿微信时间处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

// 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 })

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序之菜鸟入门教学(二)发布时间:2022-07-18
下一篇:
微信小程序开发之详解生命周期方法发布时间:2022-07-18
热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap