微信和qq時間格式模板實例詳解
直接上代碼,代碼中有注釋,大家好好看!
/** * 將一個時間戳轉(zhuǎn)換成提示性時間字符串,如 * 2分鐘內(nèi) 無顯示 * 2分鐘-24小時 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 一年內(nèi) 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 + "---當(dāng)前時間" + 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 "剛剛"; } }
這里就有一個小問題,就是自然日時間跨越實際日時間,有可能出現(xiàn)昨天的時間不顯示昨天,而顯示為HH:mm,于是測試找上門來,要求改,將2分鐘-24小時的條件改為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
* 更遠 yyyy:MM:DD HH:mm
這也不是多大的問題,問題是在跨年的情況該如何,2015-01-01 00:01.001 的前三分鐘接受的消息,也就是2014-12-31 該顯示為昨天還是去年。如果信息的接收時間比時間還要大,該如何顯示。
經(jīng)過一番撕逼,終于敲定,這里為了產(chǎn)品再次修改,要求產(chǎn)品立字據(jù)啊,作為終極版本存在。
/** * 終極方法 * 將一個時間戳轉(zhuǎn)換成提示性時間字符串,如 * 2分鐘內(nèi) 無顯示 * 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; }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
JavaScript SetInterval與setTimeout使用方法詳解
本文講解了JavaScript SetInterval與setTimeout的區(qū)別,并用代碼示例演示了使用方法2013-11-11window.location.href的用法(動態(tài)輸出跳轉(zhuǎn))
無論在靜態(tài)頁面還是動態(tài)輸出頁面中window.location.href都是不錯的用了跳轉(zhuǎn)的實現(xiàn)方案2014-08-08在javaScript中關(guān)于submit和button的區(qū)別介紹
submit是button的一個特例,也是button的一種,它把提交這個動作自動集成了,submit和button,二者都以按鈕的形式展現(xiàn),看起來都是按鈕,所不同的是type屬性和處發(fā)響應(yīng)的事件上2013-10-10JavaScript學(xué)習(xí)筆記整理_setTimeout的應(yīng)用
下面小編就為大家?guī)硪黄狫avaScript學(xué)習(xí)筆記整理_setTimeout的應(yīng)用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09javascript的數(shù)據(jù)類型、字面量、變量介紹
javascript的數(shù)據(jù)類型、字面量、變量介紹,學(xué)習(xí)js的朋友可以參考下2012-05-05JavaScript中Date.toSource()方法的使用教程
這篇文章主要介紹了JavaScript中Date.toSource()方法的使用教程,用來返回日期為字符串,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06