shushanfx
2016-10-27 13:07:48
原
javascript函数实现几分钟前,几小时前,几天前的代码片段
需求
将一个时间字符串格式(如,2016-08-15 11:23:00)显示友好时间(如,1分钟内,2分钟前等等)。
因为需要这个,所以最近开发了一个javascript函数,用于实现该需求。
时间显示规则如下:
- 与当前时间相差60s以内(不包括60s),显示1分钟内;
- 与当前时间相差60min以内(不包括60min),显示XX分钟前;
- 与当前时间相差24h以内(不包括24h),显示XX小时前;
- 与当前时间相差3d以内(不包括3d),显示XX天前;
- 发布时间为今年,显示MM-dd;
- 发布时间不在今年, 显示yyyy-MM-dd;
代码:
不多说,直接贴代码:
/** * 获取指定时间的友好时间字符串。 * @param str 指定的时间字符串,如yyyy-MM-dd HH:mm:ss * @param now 当前时间,允许时间戳,GMT时间,如果该参数为undefined,则使用浏览器时间。 */ function getFriendlyTime(str, now){ var currentTime = new Date(now); var arr = str.split(/\s+/gi); var temp = 0, arr1, arr2, oldTime, delta; var getIntValue = function(ss, defaultValue){ try{ return parseInt(ss, 10); }catch (e){ return defaultValue; } }; var getWidthString = function(num){ return num < 10 ? ("0" + num) : num; }; if(arr.length >= 2){ arr1 = arr[0].split(/[\/\-]/gi); arr2 = arr[1].split(":"); oldTime = new Date(); oldTime.setYear(getIntValue(arr1[0], currentTime.getFullYear())); oldTime.setMonth(getIntValue(arr1[1], currentTime.getMonth() + 1) - 1); oldTime.setDate(getIntValue(arr1[2], currentTime.getDate())); oldTime.setHours(getIntValue(arr2[0], currentTime.getHours())); oldTime.setMinutes(getIntValue(arr2[1], currentTime.getMinutes())); oldTime.setSeconds(getIntValue(arr2[2], currentTime.getSeconds())); delta = currentTime.getTime() - oldTime.getTime(); if(delta <= 6000){ return "1分钟内"; } else if(delta < 60 * 60 * 1000){ return Math.floor(delta / (60 * 1000)) + "分钟前"; } else if(delta < 24 * 60 * 60 * 1000){ return Math.floor(delta / (60 * 60 * 1000)) + "小时前"; } else if(delta < 3 * 24 * 60 * 60 * 1000){ return Math.floor(delta / (24 * 60 * 60 * 1000)) + "天前"; } else if(currentTime.getFullYear() != oldTime.getFullYear()){ return [getWidthString(oldTime.getFullYear()), getWidthString(oldTime.getMonth() + 1), getWidthString(oldTime.getDate())].join("-") } else{ return [getWidthString(oldTime.getMonth() + 1), getWidthString(oldTime.getDate())].join("-"); } } return ""; }
猜你喜欢
请下载代码后再发表评论
相关代码
最近下载
最近浏览
lyn520 LV3
2023年2月1日
GitHub121 LV11
2021年10月30日
lzy6312 LV14
2020年5月19日
lgdaijm LV4
2020年5月17日
骚气123456 LV7
2020年3月8日
xunje_2019 LV8
2019年4月24日
安宇12345 LV15
2019年2月13日
瞎子少年1234 LV9
2018年12月29日
laoyaoshui LV16
2018年12月11日
IT小牛 LV3
2018年10月12日