微信和qq时间格式模板实例详解


Posted in Javascript onOctober 21, 2016

        直接上代码,代码中有注释,大家好好看!

/**
   * 将一个时间戳转换成提示性时间字符串,如
   * 2分钟内 无显示
   * 2分钟-24小时 HH:mm
   * 昨天 昨天 HH:mm
   * 前天 前天 HH:mm
   * 一年内 MM:DD HH:mm
   * 去年 去年 MM:DD HH:mm
   * 前年 前年 MM:DD HH:mm
   * 更远 yyyy:MM:DD HH:mm
   * 毫秒计算
   * @param charttime
   * @return
   */
  public static String convertChatDetailTimeFormat(long charttime) {
 
    long curTime = System.currentTimeMillis() ;
    long time = curTime - charttime;
 
    XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, time + "---时间差" + time/ 1000/ 60 + "分钟");
    XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, curTime + "---当前时间" + format(new Date(curTime), FORMAT_LONG_CN_1));
    XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, charttime + "---chartTime" + format(new Date(charttime), FORMAT_LONG_CN_1));
 
    if (time < 120 * 1000 && time >= 0) {
      return "刚刚";
    } else if (time >= 120 *1000 && time < 3600 * 24 * 1000) {
 
      return format(new Date(charttime), FORMAT_HH_MM);
 
    } else if (time >= 3600 * 24 * 1 * 1000 && time < 3600 * 24 * 2 * 1000) {
 
      return "昨天" + format(new Date(charttime), FORMAT_HH_MM);
 
    } else if (time >= 3600 * 24 * 2 * 1000 && time < 3600 * 24 * 3 * 1000) {
 
      return "前天" + format(new Date(charttime), FORMAT_HH_MM);
    } else if (time >= 3600 * 24 * 3 * 1000 && time < 3600 * 24 * 365 * 1 * 1000) {
 
      return format(new Date(charttime), FORMAT_MM_DD_HH_MM);
    } else if (time >= 3600 * 24 * 365 * 1 * 1000 && time < 3600 * 24 * 365 * 2 * 1000) {
 
      return "去年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM);
    } else if (time >= 3600 * 24 * 365 * 2 * 1000 && time < 3600 * 24 * 365 * 3 * 1000) {
 
      return "前年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM);
    } else if (time >= 3600 * 24 * 365 * 3 * 1000) {
 
      return format(new Date(charttime), FORMAT_LONG_CN_1);
    } else {
      return "刚刚";
    }
  }

     这里就有一个小问题,就是自然日时间跨越实际日时间,有可能出现昨天的时间不显示昨天,而显示为HH:mm,于是测试找上门来,要求改,将2分钟-24小时的条件改为2分钟-今日内。

     那么这里的需求就改为

     * 2分钟内 无显示
     * 2分钟-今日 HH:mm
     * 昨天 昨天 HH:mm
     * 前天 前天 HH:mm
     * 今年 MM:DD HH:mm
     * 去年 去年 MM:DD HH:mm
     * 前年 前年 MM:DD HH:mm
     * 更远 yyyy:MM:DD HH:mm  

  这也不是多大的问题,问题是在跨年的情况该如何,2015-01-01 00:01.001 的前三分钟接受的消息,也就是2014-12-31 该显示为昨天还是去年。如果信息的接收时间比时间还要大,该如何显示。

经过一番撕逼,终于敲定,这里为了产品再次修改,要求产品立字据啊,作为终极版本存在。

/**
   * 终极方法
   * 将一个时间戳转换成提示性时间字符串,如
   * 2分钟内 无显示
   * 2分钟-今天 2分钟-今天 HH:mm
   * 昨天 昨天 HH:mm
   * 前天 前天 HH:mm
   * 今年 MM:DD HH:mm
   * 去年 去年 MM:DD HH:mm
   * 前年 前年 MM:DD HH:mm
   * 更远 yyyy:MM:DD HH:mm
   * 毫秒计算
   * @param time
   * @return
   */
  public static String convertWEChartTimeFormatFinalMethed(long time) {
    long curTime = System.currentTimeMillis() ;
    String showTimeFormat = "";
 
    long temp = curTime - time;
    if (temp < 120 * 1000 && temp >= 0) {
      showTimeFormat = "";
      return showTimeFormat;
    }
    Date mayTime = new Date(time);
 
//    Date today = UtilDate.parse("2015-01-01 02:02:02.001", UtilDate.FORMAT_FULL);
    Date today = new Date();
    //时间值
    String mayTime_FORMAT_SHORT = format(mayTime, FORMAT_SHORT);
    String mayTime_FORMAT_SHORT_YEAR = getYear(mayTime);
 
    if(mayTime.after(today)){
      //除此以外
      showTimeFormat = format(mayTime, FORMAT_LONG_CN_1);
 
    } else {
      if(mayTime_FORMAT_SHORT != null && !mayTime_FORMAT_SHORT.trim().toString().equals("")){
        //今天的时间yyyy-MM-dd
        String today_str = format(today, FORMAT_SHORT);
        String thisYear_str = getYear(today);
 
        //昨天的时间 yyyy-MM-dd
        Calendar calLastDay = Calendar.getInstance();
        calLastDay.setTime(today);
        calLastDay.add(Calendar.DAY_OF_YEAR, -1);
        System.out.println("昨天:" + format(calLastDay.getTime(), FORMAT_SHORT));
        String lastDay = format(calLastDay.getTime(), FORMAT_SHORT);
 
        //前天的时间 yyyy-MM-dd
        Calendar calPreviousDay = Calendar.getInstance();
        calPreviousDay.setTime(today);
        calPreviousDay.add(Calendar.DAY_OF_YEAR, -2);
        System.out.println("前天:" + format(calPreviousDay.getTime(), FORMAT_SHORT));
        String previousDay = format(calPreviousDay.getTime(), FORMAT_SHORT);
 
        //去年的时间 yyyy
        Calendar calLastYear = Calendar.getInstance();
        calLastYear.setTime(today);
        calLastYear.add(Calendar.YEAR, -1);
        String lastYear = getYear(calLastYear.getTime());
        System.out.println("去年:" + format(calLastYear.getTime(), FORMAT_SHORT));
 
        //前年的时间 yyyy
        Calendar calPreviousYear = Calendar.getInstance();
        calPreviousYear.setTime(today);
        calPreviousYear.add(Calendar.YEAR, -2);
        String previousYear = getYear(calPreviousYear.getTime());
        System.out.println("前年:" + format(calPreviousYear.getTime(), FORMAT_SHORT));
 
        //首先判断是否是今天
        if(mayTime_FORMAT_SHORT.equals(today_str)){
          //今天,则显示为 13:12
          showTimeFormat = format(mayTime, FORMAT_HH_MM);
        } else if(mayTime_FORMAT_SHORT.equals(lastDay)){
          //昨天
          showTimeFormat = "昨天 " + format(mayTime,FORMAT_HH_MM);
 
        } else if(mayTime_FORMAT_SHORT.equals(previousDay)){
          //昨天
          showTimeFormat = "前天 " + format(mayTime,FORMAT_HH_MM);
 
        } else if(mayTime_FORMAT_SHORT_YEAR.equals(thisYear_str)){
          //今年
          showTimeFormat = format(mayTime, FORMAT_MM_DD_HH_MM);
        } else if(mayTime_FORMAT_SHORT_YEAR.equals(lastYear)){
          //去年
          showTimeFormat = "去年 " + format(mayTime, FORMAT_MM_DD_HH_MM);
        } else if(mayTime_FORMAT_SHORT_YEAR.equals(previousYear)){
          //前年
          showTimeFormat = "前年 " + format(mayTime, FORMAT_MM_DD_HH_MM);
        } else {
          //除此以外
          showTimeFormat = format(mayTime, FORMAT_LONG_CN_1);
        }
 
      }
    }
 
 
    return showTimeFormat;
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
读取input:file的路径并显示本地图片的方法
Sep 23 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
Js的Array数组对象详解
Feb 22 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
Oct 27 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
three.js搭建室内场景教程
Dec 30 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
js刷新页面location.reload()用法详解
Dec 09 Javascript
微信开发 微信授权详解
Oct 21 #Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 #Javascript
微信 java 实现js-sdk 图片上传下载完整流程
Oct 21 #Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
Oct 21 #Javascript
Bootstrap如何创建表单
Oct 21 #Javascript
bootstrap table小案例
Oct 21 #Javascript
jquery+Jscex打造游戏力度条
Sep 12 #Javascript
You might like
javascript之函数直接量(function(){})()
2007/06/29 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
成绩单公证书
2014/04/10 职场文书
党员志愿者活动总结
2014/06/26 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
学校创先争优活动总结
2014/08/28 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
房屋出售授权委托书
2014/10/12 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis