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仿微信聊天时间格式化显示功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!