直接上代码,代码中有注释,大家好好看!
/** * 将一个时间戳转换成提示性时间字符串,如 * 2分钟内 无显示 * 2分钟-24小时 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 一年内 MM:DD HH:mm * 去年 去年 MM:DD HH:mm * 前年 前年 MM:DD HH:mm * 更远 yyyy:MM:DD HH:mm * 毫秒计算 * @param charttime * @return */ public static String convertChatDetailTimeFormat(long charttime) { long curTime = System.currentTimeMillis() ; long time = curTime - charttime; XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, time + "---时间差" + time/ 1000/ 60 + "分钟"); XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, curTime + "---当前时间" + format(new Date(curTime), FORMAT_LONG_CN_1)); XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, charttime + "---chartTime" + format(new Date(charttime), FORMAT_LONG_CN_1)); if (time < 120 * 1000 && time >= 0) { return "刚刚"; } else if (time >= 120 *1000 && time < 3600 * 24 * 1000) { return format(new Date(charttime), FORMAT_HH_MM); } else if (time >= 3600 * 24 * 1 * 1000 && time < 3600 * 24 * 2 * 1000) { return "昨天" + format(new Date(charttime), FORMAT_HH_MM); } else if (time >= 3600 * 24 * 2 * 1000 && time < 3600 * 24 * 3 * 1000) { return "前天" + format(new Date(charttime), FORMAT_HH_MM); } else if (time >= 3600 * 24 * 3 * 1000 && time < 3600 * 24 * 365 * 1 * 1000) { return format(new Date(charttime), FORMAT_MM_DD_HH_MM); } else if (time >= 3600 * 24 * 365 * 1 * 1000 && time < 3600 * 24 * 365 * 2 * 1000) { return "去年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM); } else if (time >= 3600 * 24 * 365 * 2 * 1000 && time < 3600 * 24 * 365 * 3 * 1000) { return "前年" + format(new Date(charttime), FORMAT_MM_DD_HH_MM); } else if (time >= 3600 * 24 * 365 * 3 * 1000) { return format(new Date(charttime), FORMAT_LONG_CN_1); } else { return "刚刚"; } }
这里就有一个小问题,就是自然日时间跨越实际日时间,有可能出现昨天的时间不显示昨天,而显示为HH:mm,于是测试找上门来,要求改,将2分钟-24小时的条件改为2分钟-今日内。
那么这里的需求就改为
* 2分钟内 无显示
* 2分钟-今日 HH:mm
* 昨天 昨天 HH:mm
* 前天 前天 HH:mm
* 今年 MM:DD HH:mm
* 去年 去年 MM:DD HH:mm
* 前年 前年 MM:DD HH:mm
* 更远 yyyy:MM:DD HH:mm
这也不是多大的问题,问题是在跨年的情况该如何,2015-01-01 00:01.001 的前三分钟接受的消息,也就是2014-12-31 该显示为昨天还是去年。如果信息的接收时间比时间还要大,该如何显示。
经过一番撕逼,终于敲定,这里为了产品再次修改,要求产品立字据啊,作为终极版本存在。
/** * 终极方法 * 将一个时间戳转换成提示性时间字符串,如 * 2分钟内 无显示 * 2分钟-今天 2分钟-今天 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 今年 MM:DD HH:mm * 去年 去年 MM:DD HH:mm * 前年 前年 MM:DD HH:mm * 更远 yyyy:MM:DD HH:mm * 毫秒计算 * @param time * @return */ public static String convertWEChartTimeFormatFinalMethed(long time) { long curTime = System.currentTimeMillis() ; String showTimeFormat = ""; long temp = curTime - time; if (temp < 120 * 1000 && temp >= 0) { showTimeFormat = ""; return showTimeFormat; } Date mayTime = new Date(time); // Date today = UtilDate.parse("2015-01-01 02:02:02.001", UtilDate.FORMAT_FULL); Date today = new Date(); //时间值 String mayTime_FORMAT_SHORT = format(mayTime, FORMAT_SHORT); String mayTime_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 String today_str = format(today, FORMAT_SHORT); String thisYear_str = getYear(today); //昨天的时间 yyyy-MM-dd Calendar calLastDay = Calendar.getInstance(); calLastDay.setTime(today); calLastDay.add(Calendar.DAY_OF_YEAR, -1); System.out.println("昨天:" + format(calLastDay.getTime(), FORMAT_SHORT)); String lastDay = format(calLastDay.getTime(), FORMAT_SHORT); //前天的时间 yyyy-MM-dd Calendar calPreviousDay = Calendar.getInstance(); calPreviousDay.setTime(today); calPreviousDay.add(Calendar.DAY_OF_YEAR, -2); System.out.println("前天:" + format(calPreviousDay.getTime(), FORMAT_SHORT)); String previousDay = format(calPreviousDay.getTime(), FORMAT_SHORT); //去年的时间 yyyy Calendar calLastYear = Calendar.getInstance(); calLastYear.setTime(today); calLastYear.add(Calendar.YEAR, -1); String lastYear = getYear(calLastYear.getTime()); System.out.println("去年:" + format(calLastYear.getTime(), FORMAT_SHORT)); //前年的时间 yyyy Calendar calPreviousYear = Calendar.getInstance(); calPreviousYear.setTime(today); calPreviousYear.add(Calendar.YEAR, -2); String previousYear = 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); } else if(mayTime_FORMAT_SHORT.equals(lastDay)){ //昨天 showTimeFormat = "昨天 " + format(mayTime,FORMAT_HH_MM); } else if(mayTime_FORMAT_SHORT.equals(previousDay)){ //昨天 showTimeFormat = "前天 " + format(mayTime,FORMAT_HH_MM); } else if(mayTime_FORMAT_SHORT_YEAR.equals(thisYear_str)){ //今年 showTimeFormat = format(mayTime, FORMAT_MM_DD_HH_MM); } else if(mayTime_FORMAT_SHORT_YEAR.equals(lastYear)){ //去年 showTimeFormat = "去年 " + format(mayTime, FORMAT_MM_DD_HH_MM); } else if(mayTime_FORMAT_SHORT_YEAR.equals(previousYear)){ //前年 showTimeFormat = "前年 " + format(mayTime, FORMAT_MM_DD_HH_MM); } else { //除此以外 showTimeFormat = format(mayTime, FORMAT_LONG_CN_1); } } } return showTimeFormat; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年09月20日
2024年09月20日
- 《粤语超白金 百听不厌的经典金曲 2CD》[WAV/分轨][1.3GB]
- 群星.1994-全世界精丫华星】【WAV+CUE】
- 杜德伟.1997-知.解2CD【滚石】【WAV+CUE】
- 群星.2022-一不小心喵上你原声大碟【TME影音】【FLAC分轨】
- 《战锤40K星际战士2》卡在正在加入服务器解决方法
- 《勇者斗恶龙怪物仙境3》玩法内容介绍
- 《幸福工厂》无限报错解决方法
- 交错战线原始交易所推荐角色一览
- 战锤40K星际战士2战术职业介绍|战术职业技能效果一览
- 战锤40K星际战士2突击职业介绍|突击职业技能效果一览
- [妙音金曲]群星《悲情咖啡屋》(黑胶)2CD[DTS-WAV]
- 阿兰·达瓦卓玛《A-Lan阿兰唯美歌姬》2CD[DTS-WAV]
- 【小提琴】陈立新《思乡曲》2004[FLAC+CUE]
- 《战地》新作明年初大规模测试!EA已内部测试一年
- 《GTAOL》PC版时隔多年更新反作弊!小助手宣布跑路