微信和qq时间格式模板实例详解
直接上代码,代码中有注释,大家好好看!
/** *将一个时间戳转换成提示性时间字符串,如 *2分钟内无显示 *2分钟-24小时HH:mm *昨天昨天HH:mm *前天前天HH:mm *一年内MM:DDHH:mm *去年去年MM:DDHH:mm *前年前年MM:DDHH:mm *更远yyyy:MM:DDHH:mm *毫秒计算 *@paramcharttime *@return */ publicstaticStringconvertChatDetailTimeFormat(longcharttime){ longcurTime=System.currentTimeMillis(); longtime=curTime-charttime; XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT,time+"---时间差"+time/1000/60+"分钟"); XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT,curTime+"---当前时间"+format(newDate(curTime),FORMAT_LONG_CN_1)); XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT,charttime+"---chartTime"+format(newDate(charttime),FORMAT_LONG_CN_1)); if(time<120*1000&&time>=0){ return"刚刚"; }elseif(time>=120*1000&&time<3600*24*1000){ returnformat(newDate(charttime),FORMAT_HH_MM); }elseif(time>=3600*24*1*1000&&time<3600*24*2*1000){ return"昨天"+format(newDate(charttime),FORMAT_HH_MM); }elseif(time>=3600*24*2*1000&&time<3600*24*3*1000){ return"前天"+format(newDate(charttime),FORMAT_HH_MM); }elseif(time>=3600*24*3*1000&&time<3600*24*365*1*1000){ returnformat(newDate(charttime),FORMAT_MM_DD_HH_MM); }elseif(time>=3600*24*365*1*1000&&time<3600*24*365*2*1000){ return"去年"+format(newDate(charttime),FORMAT_MM_DD_HH_MM); }elseif(time>=3600*24*365*2*1000&&time<3600*24*365*3*1000){ return"前年"+format(newDate(charttime),FORMAT_MM_DD_HH_MM); }elseif(time>=3600*24*365*3*1000){ returnformat(newDate(charttime),FORMAT_LONG_CN_1); }else{ return"刚刚"; } }
这里就有一个小问题,就是自然日时间跨越实际日时间,有可能出现昨天的时间不显示昨天,而显示为HH:mm,于是测试找上门来,要求改,将2分钟-24小时的条件改为2分钟-今日内。
那么这里的需求就改为
*2分钟内无显示
*2分钟-今日HH:mm
*昨天昨天HH:mm
*前天前天HH:mm
*今年MM:DDHH:mm
*去年去年MM:DDHH:mm
*前年前年MM:DDHH:mm
*更远yyyy:MM:DDHH:mm
这也不是多大的问题,问题是在跨年的情况该如何,2015-01-0100:01.001的前三分钟接受的消息,也就是2014-12-31该显示为昨天还是去年。如果信息的接收时间比时间还要大,该如何显示。
经过一番撕逼,终于敲定,这里为了产品再次修改,要求产品立字据啊,作为终极版本存在。
/** *终极方法 *将一个时间戳转换成提示性时间字符串,如 *2分钟内无显示 *2分钟-今天2分钟-今天HH:mm *昨天昨天HH:mm *前天前天HH:mm *今年MM:DDHH:mm *去年去年MM:DDHH:mm *前年前年MM:DDHH:mm *更远yyyy:MM:DDHH:mm *毫秒计算 *@paramtime *@return */ publicstaticStringconvertWEChartTimeFormatFinalMethed(longtime){ longcurTime=System.currentTimeMillis(); StringshowTimeFormat=""; longtemp=curTime-time; if(temp<120*1000&&temp>=0){ showTimeFormat=""; returnshowTimeFormat; } DatemayTime=newDate(time); //Datetoday=UtilDate.parse("2015-01-0102:02:02.001",UtilDate.FORMAT_FULL); Datetoday=newDate(); //时间值 StringmayTime_FORMAT_SHORT=format(mayTime,FORMAT_SHORT); StringmayTime_FORMAT_SHORT_YEAR=getYear(mayTime); if(mayTime.after(today)){ //除此以外 showTimeFormat=format(mayTime,FORMAT_LONG_CN_1); }else{ if(mayTime_FORMAT_SHORT!=null&&!mayTime_FORMAT_SHORT.trim().toString().equals("")){ //今天的时间yyyy-MM-dd Stringtoday_str=format(today,FORMAT_SHORT); StringthisYear_str=getYear(today); //昨天的时间yyyy-MM-dd CalendarcalLastDay=Calendar.getInstance(); calLastDay.setTime(today); calLastDay.add(Calendar.DAY_OF_YEAR,-1); System.out.println("昨天:"+format(calLastDay.getTime(),FORMAT_SHORT)); StringlastDay=format(calLastDay.getTime(),FORMAT_SHORT); //前天的时间yyyy-MM-dd CalendarcalPreviousDay=Calendar.getInstance(); calPreviousDay.setTime(today); calPreviousDay.add(Calendar.DAY_OF_YEAR,-2); System.out.println("前天:"+format(calPreviousDay.getTime(),FORMAT_SHORT)); StringpreviousDay=format(calPreviousDay.getTime(),FORMAT_SHORT); //去年的时间yyyy CalendarcalLastYear=Calendar.getInstance(); calLastYear.setTime(today); calLastYear.add(Calendar.YEAR,-1); StringlastYear=getYear(calLastYear.getTime()); System.out.println("去年:"+format(calLastYear.getTime(),FORMAT_SHORT)); //前年的时间yyyy CalendarcalPreviousYear=Calendar.getInstance(); calPreviousYear.setTime(today); calPreviousYear.add(Calendar.YEAR,-2); StringpreviousYear=getYear(calPreviousYear.getTime()); System.out.println("前年:"+format(calPreviousYear.getTime(),FORMAT_SHORT)); //首先判断是否是今天 if(mayTime_FORMAT_SHORT.equals(today_str)){ //今天,则显示为13:12 showTimeFormat=format(mayTime,FORMAT_HH_MM); }elseif(mayTime_FORMAT_SHORT.equals(lastDay)){ //昨天 showTimeFormat="昨天"+format(mayTime,FORMAT_HH_MM); }elseif(mayTime_FORMAT_SHORT.equals(previousDay)){ //昨天 showTimeFormat="前天"+format(mayTime,FORMAT_HH_MM); }elseif(mayTime_FORMAT_SHORT_YEAR.equals(thisYear_str)){ //今年 showTimeFormat=format(mayTime,FORMAT_MM_DD_HH_MM); }elseif(mayTime_FORMAT_SHORT_YEAR.equals(lastYear)){ //去年 showTimeFormat="去年"+format(mayTime,FORMAT_MM_DD_HH_MM); }elseif(mayTime_FORMAT_SHORT_YEAR.equals(previousYear)){ //前年 showTimeFormat="前年"+format(mayTime,FORMAT_MM_DD_HH_MM); }else{ //除此以外 showTimeFormat=format(mayTime,FORMAT_LONG_CN_1); } } } returnshowTimeFormat; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!