微信和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 相关文章推荐
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
Dec 25 Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
layUI实现列表查询功能
Jul 27 Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
JS+CSS实现过渡特效
Jan 02 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
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
Augularjs-起步详解
2016/07/08 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
Python中join和split用法实例
2015/04/14 Python
Python 的描述符 descriptor详解
2016/02/27 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
python编程实现希尔排序
2017/04/13 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
Python魔法方法详解
2019/02/13 Python
详解python读取和输出到txt
2019/03/29 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
课程改革实施方案
2014/03/16 职场文书
公司捐书倡议书
2015/04/27 职场文书
灵魂歌王观后感
2015/06/17 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
python requests模块的使用示例
2021/04/07 Python
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS