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

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

rush:js;"> /** * 将一个时间戳转换成提示性时间字符串,如 * 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 = Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.currentTimeMillis() ;
long time = curTime - charttime;

XCApplication.base_log.i(XCCon<a href="https://www.jb51.cc/tag/fig/" target="_blank" class="keywords">fig</a>.TAG_SY<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>_OUT,time + "---时间差" + time/ 1000/ 60 + "分钟");
XCApplication.base_log.i(XCCon<a href="https://www.jb51.cc/tag/fig/" target="_blank" class="keywords">fig</a>.TAG_SY<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>_OUT,curTime + "---当前时间" + format(new Date(curTime),FORMAT_LONG_CN_1));
XCApplication.base_log.i(XCCon<a href="https://www.jb51.cc/tag/fig/" target="_blank" class="keywords">fig</a>.TAG_SY<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>_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 该显示为昨天还是去年。如果信息的接收时间比时间还要大,该如何显示

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

rush:js;"> /** * 终极方法 * 将一个时间戳转换成提示性时间字符串,如 * 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);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("昨天:" + format(calLastDay.getTime(),FORMAT_SHORT));
    String lastDay = format(calLastDay.getTime(),FORMAT_SHORT);

    //前天的时间 yyyy-MM-dd
    Calendar calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay = Calendar.getInstance();
    calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay.setTime(today);
    calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay.add(Calendar.DAY_OF_YEAR,-2);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("前天:" + format(calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay.getTime(),FORMAT_SHORT));
    String prev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay = format(calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay.getTime(),FORMAT_SHORT);

    //去年的时间 yyyy
    Calendar calLastYear = Calendar.getInstance();
    calLastYear.setTime(today);
    calLastYear.add(Calendar.YEAR,-1);
    String lastYear = getYear(calLastYear.getTime());
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("去年:" + format(calLastYear.getTime(),FORMAT_SHORT));

    //前年的时间 yyyy
    Calendar calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear = Calendar.getInstance();
    calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear.setTime(today);
    calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear.add(Calendar.YEAR,-2);
    String prev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear = getYear(calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear.getTime());
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println("前年:" + format(calPrev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear.getTime(),FORMAT_SHORT));

    //首先判断是否是今天
    if(mayTime_FORMAT_SHORT.equals(today_str)){
      //今天,则<a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a>为 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(prev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sDay)){
      //昨天
      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(prev<a href="https://www.jb51.cc/tag/IoU/" target="_blank" class="keywords">IoU</a>sYear)){
      //前年
      showTimeFormat = "前年 " + format(mayTime,FORMAT_MM_DD_HH_MM);
    } else {
      //除此以外
      showTimeFormat = format(mayTime,FORMAT_LONG_CN_1);
    }

  }
}


return showTimeFormat;

}

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...