Android 仿微信聊天时间格式化显示功能
程序员文章站
2023-12-21 11:10:28
本文给大家分享android仿微信聊天时间格式化显示功能。
在同一年的显示规则:
如果是当天显示格式为 hh:mm 例:14:45
如果是昨天,显示格式为 昨天 hh...
本文给大家分享android仿微信聊天时间格式化显示功能。
在同一年的显示规则:
如果是当天显示格式为 hh:mm 例:14:45
如果是昨天,显示格式为 昨天 hh:mm 例:昨天 13:12
如果是在同一周 显示格式为 周一 hh:mm 例:周一14:05
如果不是同一周则显示格式为 m月d日 早上或者其它 hh:mm 例: 2月5日 早上10:10
不在同一年的显示规则:
显示格式为 yyyy年m月d日 晚上或者其它 hh:mm 例:2016年2月5日 晚上18:05
代码中如果有误,请留言。
代码实现如下:
import java.text.simpledateformat; import java.util.calendar; import java.util.date; public class test { public static void main(string[] args) { system.out.println("当前时间:"+new simpledateformat("yyyy/m/d hh:mm:ss").format(system.currenttimemillis())); system.out.println("2016/2/1 05:05:00 显示为:"+getnewchattime(1454666700000l)); system.out.println("2017/2/1 05:05:00 显示为:"+getnewchattime(1485983100000l)); system.out.println("2017/2/4 12:05:00 显示为:"+getnewchattime(1486181100000l)); system.out.println("2017/2/5 10:10:00 显示为:"+getnewchattime(1486260600000l)); system.out.println("2017/2/5 13:12:00 显示为:"+getnewchattime(1486271520000l)); system.out.println("2017/2/6 14:05:00 显示为:"+getnewchattime(1486361100000l)); /*运行结果: 当前时间:2017/2/9 14:36:36 2016/2/1 05:05:00 显示为:2016年2月5日 晚上18:05 2017/2/1 05:05:00 显示为:2月2日 凌晨05:05 2017/2/4 12:05:00 显示为:2月4日 中午12:05 2017/2/5 13:12:00 显示为:2月5日 早上10:10 2017/2/5 13:12:00 显示为:2月5日 下午13:12 2017/2/6 14:05:00 显示为:周一14:05*/ } /** * 时间戳格式转换 */ static string daynames[] = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"}; public static string getnewchattime(long timesamp) { string result = ""; calendar todaycalendar = calendar.getinstance(); calendar othercalendar = calendar.getinstance(); othercalendar.settimeinmillis(timesamp); string timeformat="m月d日 hh:mm"; string yeartimeformat="yyyy年m月d日 hh:mm"; string am_pm=""; int hour=othercalendar.get(calendar.hour_of_day); if(hour>=0&&hour<6){ am_pm="凌晨"; }else if(hour>=6&&hour<12){ am_pm="早上"; }else if(hour==12){ am_pm="中午"; }else if(hour>12&&hour<18){ am_pm="下午"; }else if(hour>=18){ am_pm="晚上"; } timeformat="m月d日 "+ am_pm +"hh:mm"; yeartimeformat="yyyy年m月d日 "+ am_pm +"hh:mm"; boolean yeartemp = todaycalendar.get(calendar.year)==othercalendar.get(calendar.year); if(yeartemp){ int todaymonth=todaycalendar.get(calendar.month); int othermonth=othercalendar.get(calendar.month); if(todaymonth==othermonth){//表示是同一个月 int temp=todaycalendar.get(calendar.date)-othercalendar.get(calendar.date); switch (temp) { case 0: result = gethourandmin(timesamp); break; case 1: result = "昨天 " + gethourandmin(timesamp); break; case 2: case 3: case 4: case 5: case 6: int dayofmonth = othercalendar.get(calendar.week_of_month); int todayofmonth=todaycalendar.get(calendar.week_of_month); if(dayofmonth==todayofmonth){//表示是同一周 int dayofweek=othercalendar.get(calendar.day_of_week); if(dayofweek!=1){//判断当前是不是星期日 如想显示为:周日 12:09 可去掉此判断 result = daynames[othercalendar.get(calendar.day_of_week)-1] + gethourandmin(timesamp); }else{ result = gettime(timesamp,timeformat); } }else{ result = gettime(timesamp,timeformat); } break; default: result = gettime(timesamp,timeformat); break; } }else{ result = gettime(timesamp,timeformat); } }else{ result=getyeartime(timesamp,yeartimeformat); } return result; } /** * 当天的显示时间格式 * @param time * @return */ public static string gethourandmin(long time) { simpledateformat format = new simpledateformat("hh:mm"); return format.format(new date(time)); } /** * 不同一周的显示时间格式 * @param time * @param timeformat * @return */ public static string gettime(long time,string timeformat) { simpledateformat format = new simpledateformat(timeformat); return format.format(new date(time)); } /** * 不同年的显示时间格式 * @param time * @param yeartimeformat * @return */ public static string getyeartime(long time,string yeartimeformat) { simpledateformat format = new simpledateformat(yeartimeformat); return format.format(new date(time)); } }
以上所述是小编给大家介绍的android 仿微信聊天时间格式化显示功能,希望对大家有所帮助