直接上代碼,代碼中有注釋,大家好好看!
/** * 將一個(gè)時(shí)間戳轉(zhuǎn)換成提示性時(shí)間字符串,如 * 2分鐘內(nèi) 無顯示 * 2分鐘-24小時(shí) HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 一年內(nèi) MM:DD HH:mm * 去年 去年 MM:DD HH:mm * 前年 前年 MM:DD HH:mm * 更遠(yuǎn) yyyy:MM:DD HH:mm * 毫秒計(jì)算 * @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 + "---時(shí)間差" + time/ 1000/ 60 + "分鐘"); XCApplication.base_log.i(XCConfig.TAG_SYSTEM_OUT, curTime + "---當(dāng)前時(shí)間" + 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 "剛剛"; } }這里就有一個(gè)小問題,就是自然日時(shí)間跨越實(shí)際日時(shí)間,有可能出現(xiàn)昨天的時(shí)間不顯示昨天,而顯示為HH:mm,于是測試找上門來,要求改,將2分鐘-24小時(shí)的條件改為2分鐘-今日內(nèi)。
那么這里的需求就改為
* 2分鐘內(nèi) 無顯示
* 2分鐘-今日 HH:mm
* 昨天 昨天 HH:mm
* 前天 前天 HH:mm
* 今年 MM:DD HH:mm
* 去年 去年 MM:DD HH:mm
* 前年 前年 MM:DD HH:mm
* 更遠(yuǎn) yyyy:MM:DD HH:mm
這也不是多大的問題,問題是在跨年的情況該如何,2015-01-01 00:01.001 的前三分鐘接受的消息,也就是2014-12-31 該顯示為昨天還是去年。如果信息的接收時(shí)間比時(shí)間還要大,該如何顯示。
新聞熱點(diǎn)
疑難解答
圖片精選