微信、qq时间格式模板

简介:   产品近来蛋疼,时间格式从做完到现在改了四遍了 ,最新的要求如下: * 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      这不是问题,很快写完代码。

  产品近来蛋疼,时间格式从做完到现在改了四遍了 ,最新的要求如下:

     * 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

     这不是问题,很快写完代码。

     

 1  /**
 2      * 将一个时间戳转换成提示性时间字符串,如
 3      * 2分钟内 无显示
 4      * 2分钟-24小时 HH:mm
 5      * 昨天 昨天 HH:mm
 6      * 前天 前天 HH:mm
 7      * 一年内 MM:DD HH:mm
 8      * 去年 去年 MM:DD HH:mm
 9      * 前年 前年 MM:DD HH:mm
10      * 更远 yyyy:MM:DD HH:mm
11      * 毫秒计算
12      * @param charttime
13      * @return
14      */
15     public static String convertChatDetailTimeFormat(long charttime) {
16 
17         long curTime = System.currentTimeMillis() ;
18         long time = curTime - charttime;
19 
20         XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, time + "---时间差" + time/ 1000/ 60 + "分钟");
21         XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, curTime + "---当前时间" + format(new Date(curTime), FORMAT_LONG_CN_1));
22         XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, charttime + "---chartTime" + format(new Date(charttime), FORMAT_LONG_CN_1));
23 
24         if (time < 120 * 1000 && time >= 0) {
25             return "刚刚";
26         } else if (time >= 120 *1000 && time < 3600 * 24 * 1000) {
27 
28             return format(new Date(charttime), FORMAT_HH_MM);
29 
30         } else if (time >= 3600 * 24 * 1 * 1000 && time < 3600 * 24 * 2 * 1000) {
31 
32             return "昨天" + format(new Date(charttime), FORMAT_HH_MM);
33 
34         } else if (time >= 3600 * 24 * 2 * 1000 && time < 3600 * 24 * 3 * 1000) {
35 
36             return "前天" + format(new Date(charttime), FORMAT_HH_MM);
37         } else if (time >= 3600 * 24 * 3 * 1000 && time < 3600 * 24 * 365 * 1 * 1000) {
38 
39             return format(new Date(charttime), FORMAT_MM_DD_HH_MM);
40         } else if (time >= 3600 * 24 * 365 * 1 * 1000 && time < 3600 * 24 * 365 * 2 * 1000) {
41 
42             return "去年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM);
43         } else if (time >= 3600 * 24 * 365 * 2 * 1000 && time < 3600 * 24 * 365 * 3 * 1000) {
44 
45             return "前年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM);
46         } else if (time >= 3600 * 24 * 365 * 3 * 1000) {
47 
48             return format(new Date(charttime), FORMAT_LONG_CN_1);
49         } else {
50             return "刚刚";
51         }
52     }

     这里就有一个小问题,就是自然日时间跨越实际日时间,有可能出现昨天的时间不显示昨天,而显示为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 该显示为昨天还是去年。如果信息的接收时间比时间还要大,该如何显示。
经过一番撕逼,终于敲定,这里为了产品再次修改,要求产品立字据啊,作为终极版本存在。
  1  /**
  2      * 终极方法
  3      * 将一个时间戳转换成提示性时间字符串,如
  4      * 2分钟内 无显示
  5      * 2分钟-今天  2分钟-今天 HH:mm
  6      * 昨天 昨天 HH:mm
  7      * 前天 前天 HH:mm
  8      * 今年 MM:DD HH:mm
  9      * 去年 去年 MM:DD HH:mm
 10      * 前年 前年 MM:DD HH:mm
 11      * 更远 yyyy:MM:DD HH:mm
 12      * 毫秒计算
 13      * @param time
 14      * @return
 15      */
 16     public static String convertWEChartTimeFormatFinalMethed(long time) {
 17         long curTime = System.currentTimeMillis() ;
 18         String showTimeFormat = "";
 19 
 20         long temp = curTime - time;
 21         if (temp < 120 * 1000 && temp >= 0) {
 22             showTimeFormat = "";
 23             return showTimeFormat;
 24         }
 25         Date mayTime = new Date(time);
 26 
 27 //        Date today = UtilDate.parse("2015-01-01 02:02:02.001", UtilDate.FORMAT_FULL);
 28         Date today = new Date();
 29         //时间值
 30         String mayTime_FORMAT_SHORT = format(mayTime, FORMAT_SHORT);
 31         String mayTime_FORMAT_SHORT_YEAR = getYear(mayTime);
 32 
 33         if(mayTime.after(today)){
 34             //除此以外
 35             showTimeFormat = format(mayTime, FORMAT_LONG_CN_1);
 36 
 37         } else {
 38             if(mayTime_FORMAT_SHORT != null && !mayTime_FORMAT_SHORT.trim().toString().equals("")){
 39                 //今天的时间yyyy-MM-dd
 40                 String today_str = format(today, FORMAT_SHORT);
 41                 String thisYear_str = getYear(today);
 42 
 43                 //昨天的时间 yyyy-MM-dd
 44                 Calendar calLastDay = Calendar.getInstance();
 45                 calLastDay.setTime(today);
 46                 calLastDay.add(Calendar.DAY_OF_YEAR, -1);
 47                 System.out.println("昨天:" + format(calLastDay.getTime(), FORMAT_SHORT));
 48                 String lastDay = format(calLastDay.getTime(), FORMAT_SHORT);
 49 
 50                 //前天的时间 yyyy-MM-dd
 51                 Calendar calPreviousDay = Calendar.getInstance();
 52                 calPreviousDay.setTime(today);
 53                 calPreviousDay.add(Calendar.DAY_OF_YEAR, -2);
 54                 System.out.println("前天:" + format(calPreviousDay.getTime(), FORMAT_SHORT));
 55                 String previousDay = format(calPreviousDay.getTime(), FORMAT_SHORT);
 56 
 57                 //去年的时间 yyyy
 58                 Calendar calLastYear = Calendar.getInstance();
 59                 calLastYear.setTime(today);
 60                 calLastYear.add(Calendar.YEAR, -1);
 61                 String lastYear = getYear(calLastYear.getTime());
 62                 System.out.println("去年:" + format(calLastYear.getTime(), FORMAT_SHORT));
 63 
 64                 //前年的时间 yyyy
 65                 Calendar calPreviousYear = Calendar.getInstance();
 66                 calPreviousYear.setTime(today);
 67                 calPreviousYear.add(Calendar.YEAR, -2);
 68                 String previousYear = getYear(calPreviousYear.getTime());
 69                 System.out.println("前年:" + format(calPreviousYear.getTime(), FORMAT_SHORT));
 70 
 71                 //首先判断是否是今天
 72                 if(mayTime_FORMAT_SHORT.equals(today_str)){
 73                     //今天,则显示为 13:12
 74                     showTimeFormat = format(mayTime, FORMAT_HH_MM);
 75                 } else if(mayTime_FORMAT_SHORT.equals(lastDay)){
 76                     //昨天
 77                     showTimeFormat = "昨天 " + format(mayTime,FORMAT_HH_MM);
 78 
 79                 } else if(mayTime_FORMAT_SHORT.equals(previousDay)){
 80                     //昨天
 81                     showTimeFormat = "前天 " + format(mayTime,FORMAT_HH_MM);
 82 
 83                 } else if(mayTime_FORMAT_SHORT_YEAR.equals(thisYear_str)){
 84                     //今年
 85                     showTimeFormat = format(mayTime, FORMAT_MM_DD_HH_MM);
 86                 } else if(mayTime_FORMAT_SHORT_YEAR.equals(lastYear)){
 87                     //去年
 88                     showTimeFormat = "去年  " + format(mayTime, FORMAT_MM_DD_HH_MM);
 89                 } else if(mayTime_FORMAT_SHORT_YEAR.equals(previousYear)){
 90                     //前年
 91                     showTimeFormat = "前年  " + format(mayTime, FORMAT_MM_DD_HH_MM);
 92                 } else {
 93                     //除此以外
 94                     showTimeFormat = format(mayTime, FORMAT_LONG_CN_1);
 95                 }
 96 
 97             }
 98         }
 99 
100 
101         return showTimeFormat;
102     }

 

目录
相关文章
|
8天前
|
监控 算法 测试技术
即时通讯技术文集(第45期):微信、QQ技术精华合集(Part2) [共14篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第45 期。
22 3
|
15天前
|
存储 编解码 监控
即时通讯技术文集(第44期):微信、QQ技术精华合集(Part1) [共14篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第44 期。
21 2
|
5月前
|
小程序 前端开发
生活商城app微信小程序模板源码
生活商城app微信小程序模板源码
65 6
|
3月前
|
JSON 小程序 前端开发
towxml的使用,在微信小程序中快速将markdown格式渲染为wxml文本
本文介绍了在微信小程序中使用`towxml`库将Markdown格式文本渲染为WXML的方法。文章提供了`towxml`的概述、安装步骤、以及如何在小程序中配置和使用`towxml`进行Markdown解析的详细说明和代码示例。
|
2月前
|
小程序
java--微信小程序发送模板消息
java--微信小程序发送模板消息
128 0
QQ,微信 消息轰炸
QQ,微信 消息轰炸
|
3月前
|
API
电脑上控制所有软件,比如说微信自动发消息,QQ
电脑上控制所有软件,比如说微信自动发消息,QQ
|
5月前
|
小程序
同城拼车社交微信小程序模板源码
同城拼车社交微信小程序模板源码
82 6
|
5月前
|
小程序 前端开发
微信综合购物商城小程序ui模板源码
微信电商小程序前端页面,综合购物商城ui界面模板。主要功能包含:电商主页、商品分类、购物车、购物车结算、我的个人中心管理、礼券、签到、新人专享、专栏、商品详情页、我的订单、我的余额、我的积分、我的收藏、我的地址、我的礼券等。这是一款非常齐全的电商小程序前端模板。
119 4
|
5月前
|
小程序 前端开发
网络祭祀人物微信小程序模板源码
网络祭祀人物微信小程序模板源码
52 5