朋友圈动态发布时间计算
来源:互联网 发布:濮阳市公务员网络 编辑:程序博客网 时间:2024/05/12 03:17
转自:IT_xiao小巫,http://blog.csdn.net/wwj_748
前面的一篇文章给大家关于时间知识点的分享http://blog.csdn.net/wwj_748/article/details/11536421,本篇博客笔者想给大家分享的事如何通过Calendar来计算我们平时需要用到的年、月、日、时、分、秒等,还有如何计算类似朋友圈动态发布的时间。
这里要大家去了解的几个重要的类:
日历类:Calendar
日期类:Date
日期格式类:SimpleDateFormat
基本上我们对日期的一些转换都是在这几个类中进行的,有以下几个常用的转换:
通过Calendar获取相关日期信息,比如当前的年月日,去年的年月日、下一年的年月日等,这里可以查看笔者关于自定义日历的一篇博文,有提供相关的日期工作类:http://blog.csdn.net/wwj_748/article/details/42244865
Date与Calendar之间的转换
Date与日期字符串的互相转换
首先我们来看如何使用Calendar来获取我们想要的日期信息:
获取当前日历:
Calendar calendar = Calendar.getInstance();
获取当前月:Calendar calendar = Calendar.getInstance();
根据字段来获取信息
获取当前年份:
Calendar.getInstance().get(Calendar.YEAR)Calendar.getInstance().get(Calendar.MONTH) + 1
注意这里要+1,因为月份是从0开始的。
获取当前月的第几天:
calendar.get(Calendar.DAY_OF_MONTH)
获取当前时间毫秒显示:
calendar.getTimeInMillis()
Calendar还可以做很多一些运算,笔者在开发日历控件的时候,就做了很多关于日期的运算:
通过Calendar的add方法来对指定字段进行运算,举例如下:
// 获取去年的年份 public static int getLastYear() { Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR, -1); return c.get(Calendar.YEAR); } // 获取下一年年份 public static int getNextYear() { Calendar c = Calendar.getInstance(); c.add(Calendar.YEAR, 1); return c.get(Calendar.YEAR); }
// 获取上一个月的月份 public static int getLastMonth() { Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, -1); return c.get(Calendar.MONTH) + 1; } // 获取下一个月的月份 public static int getNextMonth() { Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 1); return c.get(Calendar.MONTH) + 1; }
关于Calendar还有很多字段,希望读者查看API自己去尝试。
Date与Calendar之间的转换
我们可以通过调用Calendar的setTime方法来设置时间所对应的日历对象
calendar.setTime(new Date())Date与日期字符串的互相转换
在实际开发中,我们经常需要对服务端返回的日期数据进行格式化,这里就需要用到SimleDateFormat,我们可以指定日期格式:
private static SimpleDateFormat DATE_FORMAT_TILL_SECOND = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
我们得到一个日期字符串,可以将其转换为Date对象:
/** * 日期字符串转换为Date * @param dateStr * @param format * @return */ public static Date strToDate(String dateStr, String format) { Date date = null; if (!TextUtils.isEmpty(dateStr)) { DateFormat df = new SimpleDateFormat(format); try { date = df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; }
也可以将我们获取的Date对象转换为指定格式的字符串:
/** * 日期转换为字符串 * @param timeStr * @param format * @return */ public static String dateToString(String timeStr, String format) { // 判断是否是今年 Date date = strToDate(timeStr, format); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); // 如果是今年的话,才去“xx月xx日”日期格式 if (calendar.get(Calendar.YEAR) == getYear()) { return DATE_FORMAT_TILL_DAY_CURRENT_YEAR.format(date); } return DATE_FORMAT_TILL_DAY_CH.format(date); }最后要说的就是,开发中我们需要计算一条动态的发布时间,一般我们得到的是一条日期字符串,我们需要计算当前时间和动态的发布时间,计算它们的差值来判断发布在什么时候,上代码:
/** * 日期逻辑 * @param dateStr 日期字符串 * @return */ public static String timeLogic(String dateStr) { Calendar calendar = Calendar.getInstance(); calendar.get(Calendar.DAY_OF_MONTH); long now = calendar.getTimeInMillis(); Date date = strToDate(dateStr, DATE_FORMAT); calendar.setTime(date); long past = calendar.getTimeInMillis(); // 相差的秒数 long time = (now - past) / 1000; StringBuffer sb = new StringBuffer(); if (time > 0 && time < 60) { // 1小时内 return sb.append(time + "秒前").toString(); } else if (time > 60 && time < 3600) { return sb.append(time / 60+"分钟前").toString(); } else if (time >= 3600 && time < 3600 * 24) { return sb.append(time / 3600 +"小时前").toString(); }else if (time >= 3600 * 24 && time < 3600 * 48) { return sb.append("昨天").toString(); }else if (time >= 3600 * 48 && time < 3600 * 72) { return sb.append("前天").toString(); }else if (time >= 3600 * 72) { return dateToString(dateStr, DATE_FORMAT); } return dateToString(dateStr, DATE_FORMAT); }
效果类似这种:
本文的记录到这里,这里提一点,开发中我们经常遇到的一些知识点是可以整理和总结的,移动的产品开发是需要快递迭代的,对这些开发知识点的记录对自己有很大的帮助,提升你自己的开发效率,对应的你的能力就提升了,薪资也会跟着往上升,小巫个人的一点观点,感谢你的耐心阅读。
阅读全文
0 0
- 朋友圈动态发布时间计算
- 朋友圈动态发布时间计算
- 朋友圈动态发布时间计算
- Android记录19-朋友圈动态发布时间计算
- Android记录19-朋友圈动态发布时间计算
- Java计算时间,可以像微信朋友圈那样显示发布的时间
- 关于类似朋友圈的发布时间间隔计算问题(python)
- android 仿微信朋友圈发布动态功能
- 仿微信朋友圈动态的时间显示
- 时间处理(仿朋友圈、微博发布时间)
- 仿微信朋友圈动态列表
- 朋友圈动态性能优化
- 小米面试题 计算朋友圈问题
- asp.net 处理和计算微博发布时间
- C#处理和计算微博发布时间
- js 文章、通知、公告、新闻等发布时间计算
- 仿微信朋友圈日期显示 时间戳格式化
- Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码
- 2017年中总结、半年总结
- 563. Binary Tree Tilt
- HDU 3926 Hand in Hand 同构图★
- Lua 基础之弱引用 table
- SQLserver创建代理作业
- 朋友圈动态发布时间计算
- nRF52832 — 矩阵键盘
- ubunt 14 下安装jenkins
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- FZU 2271 X (Floyd)(第七届福建省大学生程序设计竞赛)
- 欢迎使用CSDN-markdown编辑器
- 461. Hamming Distance
- Linux16.04解决:在源列表 /etc/apt/sources.list.d/google-chrome.list 中第 1 行有误 (类型) E: 无法读取源列表。
- 数据库高可用和分区解决方案-MySQL 篇