Android 仿微信聊天时间格式化显示功能
本文给大家分享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
代码中如果有误,请留言。
代码实现如下:
importJava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; publicclassTest{ publicstaticvoidmain(String[]args){ System.out.println("当前时间:"+newSimpleDateFormat("yyyy/M/dHH:mm:ss").format(System.currentTimeMillis())); System.out.println("2016/2/105:05:00显示为:"+getNewChatTime(1454666700000l)); System.out.println("2017/2/105:05:00显示为:"+getNewChatTime(1485983100000l)); System.out.println("2017/2/412:05:00显示为:"+getNewChatTime(1486181100000l)); System.out.println("2017/2/510:10:00显示为:"+getNewChatTime(1486260600000l)); System.out.println("2017/2/513:12:00显示为:"+getNewChatTime(1486271520000l)); System.out.println("2017/2/614:05:00显示为:"+getNewChatTime(1486361100000l)); /*运行结果: 当前时间:2017/2/914:36:36 2016/2/105:05:00显示为:2016年2月5日晚上18:05 2017/2/105:05:00显示为:2月2日凌晨05:05 2017/2/412:05:00显示为:2月4日中午12:05 2017/2/513:12:00显示为:2月5日早上10:10 2017/2/513:12:00显示为:2月5日下午13:12 2017/2/614:05:00显示为:周一14:05*/ } /** *时间戳格式转换 */ staticStringdayNames[]={"周日","周一","周二","周三","周四","周五","周六"}; publicstaticStringgetNewChatTime(longtimesamp){ Stringresult=""; CalendartodayCalendar=Calendar.getInstance(); CalendarotherCalendar=Calendar.getInstance(); otherCalendar.setTimeInMillis(timesamp); StringtimeFormat="M月d日HH:mm"; StringyearTimeFormat="yyyy年M月d日HH:mm"; Stringam_pm=""; inthour=otherCalendar.get(Calendar.HOUR_OF_DAY); if(hour>=0&&hour<6){ am_pm="凌晨"; }elseif(hour>=6&&hour<12){ am_pm="早上"; }elseif(hour==12){ am_pm="中午"; }elseif(hour>12&&hour<18){ am_pm="下午"; }elseif(hour>=18){ am_pm="晚上"; } timeFormat="M月d日"+am_pm+"HH:mm"; yearTimeFormat="yyyy年M月d日"+am_pm+"HH:mm"; booleanyearTemp=todayCalendar.get(Calendar.YEAR)==otherCalendar.get(Calendar.YEAR); if(yearTemp){ inttodayMonth=todayCalendar.get(Calendar.MONTH); intotherMonth=otherCalendar.get(Calendar.MONTH); if(todayMonth==otherMonth){//表示是同一个月 inttemp=todayCalendar.get(Calendar.DATE)-otherCalendar.get(Calendar.DATE); switch(temp){ case0: result=getHourAndMin(timesamp); break; case1: result="昨天"+getHourAndMin(timesamp); break; case2: case3: case4: case5: case6: intdayOfMonth=otherCalendar.get(Calendar.WEEK_OF_MONTH); inttodayOfMonth=todayCalendar.get(Calendar.WEEK_OF_MONTH); if(dayOfMonth==todayOfMonth){//表示是同一周 intdayOfWeek=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); } returnresult; } /** *当天的显示时间格式 *@paramtime *@return */ publicstaticStringgetHourAndMin(longtime){ SimpleDateFormatformat=newSimpleDateFormat("HH:mm"); returnformat.format(newDate(time)); } /** *不同一周的显示时间格式 *@paramtime *@paramtimeFormat *@return */ publicstaticStringgetTime(longtime,StringtimeFormat){ SimpleDateFormatformat=newSimpleDateFormat(timeFormat); returnformat.format(newDate(time)); } /** *不同年的显示时间格式 *@paramtime *@paramyearTimeFormat *@return */ publicstaticStringgetYearTime(longtime,StringyearTimeFormat){ SimpleDateFormatformat=newSimpleDateFormat(yearTimeFormat); returnformat.format(newDate(time)); } }
以上所述是小编给大家介绍的Android仿微信聊天时间格式化显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!