微信和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 相关文章推荐
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
JS网页图片按比例自适应缩放实现方法
Jan 15 Javascript
js获取视频时长代码
Apr 10 Javascript
js确认删除对话框适用于a标签及submit
Jul 10 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
基于jquery实现三级下拉菜单
May 10 Javascript
详解vue.js组件化开发实践
Dec 14 Javascript
如何在Angular2中使用jQuery及其插件的方法
Feb 09 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
jQuery实现简易聊天框
Feb 08 jQuery
vue实现虚拟列表功能的代码
Jul 28 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
微信开发 微信授权详解
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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
UserData用法总结 lanyu出品
2010/07/01 Javascript
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
Python实现的中国剩余定理算法示例
2017/08/05 Python
六行python代码的爱心曲线详解
2019/05/17 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
Python configparser模块常用方法解析
2020/05/22 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
文科教师毕业的自我评价
2014/01/16 职场文书
简历的自我评价
2014/02/03 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
毕业证委托书范文
2014/09/26 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
2014年防汛工作总结
2014/12/08 职场文书
检讨书怎么写
2015/05/07 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android