微信、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

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

 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     }
时间: 2024-08-10 21:28:49

微信、qq时间格式模板的相关文章

模仿微信朋友圈发布时间,将过去时间格式化成xx(秒/分/小时/天)前

模仿微信朋友圈发布时间,使用扩展方法将将过去时间展示成xx(秒/分/小时/天)前,以留言列表中的留言时间为例,先来看一下直接的时间展示效果(date.ToString("yyyy/MM/dd HH:mm:ss")) 感觉很一般,没有什么特别 下面 我们写一个拓展方法,将留言时间格式化成xx(秒/分/小时/天)前 decimal.Truncate(data)//取decimal整数位 public static class HtmlExpansion { //只格式化2天内的时间 pub

Thymeleaf模板格式化LocalDatetime时间格式

添加maven依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> <version>3.0.1.RELEASE</version> </dependency> 前端模板上的写法: <span th:text="${#dates.for

h5 网页版的微博微信QQ登录

一:微博 1,先说微博吧,首先你的去http://open.weibo.com/wiki/先注册账号,通过验证审核.然后的创建网页应用.微博审核不通过的原因就是域名和网站地址,一定要按实际写的.一定要记得在微博这里设置回调页.然后根据微博开发文档一步一步下来. 2.微博的获取code的地址,是不用urlencode编码的,这个跟微信QQ不同.从客服端获取到code之后,我们是传入服务端的.因为微博第获取acces_token必须要求post请求,微博后台做了不能跨域这是第一个原因.第二个原因是a

SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博

SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博 SharePanel Android上简单的一键分享可分享到微信QQ和新浪微博 简介 效果图 代码块 简介 最近在写一个小程序长微博工具,效果就是编辑长微博,然后一键分享到微信.QQ和新浪微博. 一开始是想直接用Intent.createChooser(target, title)来做,后来一想,这样做不是很好啊,会有许多乱七八糟的应用弹出来,我想优先分享到微信.QQ和微博,于是找了点资料,将一键分享这个部分做

django数据库中的时间格式与页面渲染出来的时间格式不一致的处理

django数据库中的时间格式与页面渲染出来的时间格式不一致的处理. 在数据库里,时间是这样显示的: date: 2012-07-21 12:27:22 | date | datetime | NO | | NULL | | +-----------+-------------+------+-----+---------+----------------+ 在模板里用: <span>{{ post.date }}</span> 打印出来,时间格式是这样的: July 21, 20

sql 时间格式

在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):

微信,QQ这类IM app怎么做——谈谈Websocket

前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈我对WebSocket/Socket的一些看法了.要想做IM聊天app,就不得不理解WebSocket和Socket的原理了,听我一一道来. 目录 1.WebSocket使用场景 2.WebSocket诞生由来 3.谈谈WebSocket协议原理 4.WebSocket 和 Socket的区别与联系

微信,QQ这类移动开发IM app怎么做?

本文原作者:一缕殇流化隐半边冰霜(简书) 前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈我对WebSocket/Socket的一些看法了.要想做IM聊天app,就不得不理解WebSocket和Socket的原理了,听我一一道来. 目录 1.WebSocket使用场景 2.WebSocket诞生由来 3.谈谈WebSocket协议原理 4.Web

(转)微信,QQ这类IM app怎么做——谈谈Websocket

转:http://www.cocoachina.com/ios/20160527/16482.html 前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈我对WebSocket/Socket的一些看法了.要想做IM聊天app,就不得不理解WebSocket和Socket的原理了,听我一一道来. 目录 1.WebSocket使用场景 2.WebSoc