项目jar包地址:
http://download.csdn.net/detail/lovefive5/9803598

好了,进入正题
最近在做一个即时通讯+短信方面的App。
大家都知道,现在的APP都需要显示时间,这是必不可少的,就像QQ这样。

而我想的是怎样把时间显示的更详细的一些。
不多说,上部分模拟数据结果

其实这个东西实现起来很简单,因为用的地方太多了,我就把它抽取出来了!

好了,现在看代码

1.静态常量

public class StaticString {public static final String year="年";public static final String month="月";public static final String day="日";
}

2.分割时间

主要是把系统时间和用户传递过来的long型时间,分割成年月日等,并将时间用ArrayList保存起来(数组也可以,都差不多)

    // 分割出时间的具体每一个时间private ArrayList<String> splitSystemTime(long time) {ArrayList<String> TimeDetail = new ArrayList<>();// 时间字符串显示String stringtime = format.format(time);// 分割出年String[] str1 = stringtime.split(StaticString.year);SystemYear = str1[0];// 分割出月String[] str2 = str1[1].split(StaticString.month);SystemMonth = str2[0];// 分割出日String[] str3 = str2[1].split(StaticString.day);SystemDay = str3[0];//分割出剩余时间 如:10:20SystemHour = str3[1];TimeDetail.add(SystemYear);TimeDetail.add(SystemMonth);TimeDetail.add(SystemDay);TimeDetail.add(SystemHour);return TimeDetail;}

3.对比时间
将系统时间和用户传递时间进行对比,显示时间详情

public String getTime(long time) {//格式化完整时间format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");format1 = new SimpleDateFormat("MM月dd日 HH:mm");String StringTime = null;//获取系统时间分割集合ArrayList<String> SystemDetailTime =    splitSystemTime(System.currentTimeMillis());//获取用户传递时间分割结果ArrayList<String> NowDetailTime = splitSystemTime(time);// 如果年份相同,继续对比,否则直接显示if (SystemDetailTime.get(0).equals(NowDetailTime.get(0))) {// 如果月份相同,继续对比,否则直接显示if (SystemDetailTime.get(1).equals(NowDetailTime.get(1))) {// 如果天数相同,显示简单的HH:mm,否则计算天数差String SystemDetailDay = SystemDetailTime.get(2);String NowDetailDay = NowDetailTime.get(2);if (SystemDetailDay.equals(NowDetailDay)) {StringTime = NowDetailTime.get(3);} else {// 计算天数差int a = Integer.parseInt(SystemDetailDay);int b = Integer.parseInt(NowDetailDay);// 显示前后两天详情if((a-b)>-3||(a-b)<3){switch (a - b) {case 1:StringTime = "昨天" + NowDetailTime.get(3);break;case 2:StringTime = "前天" + NowDetailTime.get(3);break;case -1:StringTime = "明天" + NowDetailTime.get(3);break;case -2:StringTime = "后天" + NowDetailTime.get(3);break;}}//差3天就直接给用户显示MM月dd日 HH:mmelse{StringTime = format1.format(time);}}} else {StringTime = format1.format(time);}} else {StringTime = format.format(time);}return StringTime;}

4.考虑
这里我考虑到也许有些人想显示出星期详情,例如:10月 21日 星期二 这样的
但是其实我个人认为这样是非常影响用户体验的。
因为用户想要的是更直观的了解到我这条信息是哪天发的呀,今天or昨天,前天or大前天类似的。不会看见是星期二发的,大脑还再去计算的计算是啥时候,这样就无意义了!

不过我把计算星期方式放上来,虽然没有实现。。。

        //set 年月日 获得星期详情Calendar c = Calendar.getInstance();c.set(2016, 5, 20);c.get(Calendar.DAY_OF_WEEK);System.out.println(c.get(Calendar.DAY_OF_WEEK));

其实还可以把这些更扩展一下,比如几分钟前,几小时前这样。

清明时节雨纷纷,闲来无事当码农;显示详细时间案例相关推荐

  1. 清明时节雨纷纷,祭祖的日子又悄然无息地到来了

    清明时节雨纷纷,路上行人欲断魂.清明不仅仅是二十四节气之一,更是我国最重要的传统节日之一,是祭祖和扫墓的日子. 清明节的来源相信大家都略有耳闻,就是晋公子重耳因为迫害而流浪到他国,状况十分窘迫,甚至连 ...

  2. 优秀码农选择对象详细指南,看完记得要实战噢

    2023年了,你是否已到了法定年纪,那么这一篇优秀码农选择对象的详细指南,你一定用得到,看完记得感谢狗哥哦! 目录 一.对于婚姻先来思考这么几条 1. 太快决定结婚? 2. 一方或双方急于结婚? 3. ...

  3. win32版QQ隐藏功能,气泡消息显示详细时间

    偶然发现win32版QQ的一个隐藏功能,QQ在电脑上的消息可以显示为气泡模式和经典模式,气泡模式通常情况下不会显示详细的时间信息,QQ有一个隐藏功能,按鼠标中键可以显示一会详细时间,效果如图 正常是这 ...

  4. 狂赚 1000 W!2020码农财富自由到底有多牛?看看深圳房价、蚂蚁上市、拼多多市值就知道了......

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 作者 | 可可 来自 |开发者技术前线 2021 来了! 回首过去的2020 ,大家都过的 ...

  5. 身价过亿的冰山御萝对小码农说你液晶能显示吗

    文章目录 小码农为了御萝,咳咳,为了知识怎么敢说液晶不显示啊 ==联动文章 [身价过亿的冰山御萝的姐姐对小码农说你有大一点的液晶吗](https://blog.csdn.net/diandengren ...

  6. 每3位新码农中就有2个是单身?来自31000人的调查报告显示……

    选自Medium 作者:Quincy Larson 机器之心编译 参与:刘晓坤.王淑婷 freeCodeCamp 做了一个名为「2018 New Coder Survey」的调研,以了解成年人学写代码 ...

  7. 来自31000人的调查报告显示:每3位新码农中就有2个是单身……

    选自Medium,作者:Quincy Larson,机器之心编译,参与:刘晓坤.王淑婷. freeCodeCamp 做了一个名为「2018 New Coder Survey」的调研,以了解成年人学写代 ...

  8. 【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

    怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 ...

  9. 孤独后厂村,码农的故乡:30万互联网人跳不出的中国硅谷

    本文来源公众号GQ报道(GQREPORT),更多独家报道请关注GQ报道 采访.撰文:洪蔚琳 编辑:何瑫 北京北五环外,一块叫作后厂村的2.6平方公里的土地被誉为"中国硅谷".这个远 ...

最新文章

  1. 快速开发一个PHP扩展
  2. 20172307 结对编程项目-四则运算 第二周 阶段总结
  3. data 谷歌浏览器更改user 路径_chrome浏览器的跨域设置——包括版本49前后两种设置...
  4. Android studio | Android studio下APP目录工程结构详解
  5. 【项目合作】最高50万元!道路缝隙检测、目标跟踪优化、机器人平台开发
  6. 嵌入式设计---(2)任务管理与调度
  7. DedeCMS 批量删除垃圾注册用户和垃圾文档
  8. python安装mysql模块_Python:使用pip安装MySQL-python模块
  9. Flutter OverflowBox溢出容器
  10. 小米手机怎么在图片显示定位服务器,小米浏览器中,图片导致fixed定位的元素无法显示...
  11. c语言 最大子段和,最大子段和 C语言源码
  12. 基于matlab的脑瘤mr图像处理_基于电势能改进的区域生长脑肿瘤图像分割
  13. 八段数码管动态显示(输入数据为BCD编码)
  14. 香帅金融课之房地产专辑
  15. 普通云硬盘,高性能云硬盘和SSD云硬盘三者之间有什么区别?
  16. [美]杰克·韦尔奇《赢》
  17. 垂死挣扎还是涅槃重生 -- Delphi XE5 发布会归来感想
  18. ubuntu12.04 GX编译环境搭建
  19. 华大HC32L136--低功耗ADC功耗过高问题
  20. TLS协议分析 与 现代加密通信协议设计

热门文章

  1. canvas制作星空放射效果
  2. vf计算机二级的描述,计算机二级VF重点
  3. 我的JavaScript回顾之路_08—0227—支付密码输入框/弹性布局flex
  4. book类 借书 java_模拟借书系统(Java入门第三季第一章练习)
  5. 脚本监控windows的cpu 内存 磁盘 使用率
  6. 银河证券:A股进入全面泡沫期 看好科技网络 医药 军工概念 1
  7. fpx对阵ig心都碎了
  8. linux mkdir 文件夹,Linux mkdir创建文件夹命令
  9. python实现人民币大写转换
  10. 银行招聘----数学运算