微信和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;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!