一段日期友好显示的javascript脚本
标签(空格分隔): 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;
基本思路
Created with Raphaël 2.1.0
开始(str)
转为时间格式(date)
转为时间戳(timestamp)
>=1min
>=1h
>=1day
>=3day
不在今年
格式(yyyy-MM-dd)
显示时间字符串
yes
no
yes
no
yes
no
yes
no
yes
no
简单来说,就是用当前时间的时间戳与指定时间的时间错戳相减,用这个差值进行匹配。
代码
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 "";
}
调用方式: getFriendlyTime(str[, now]),如getFriendlyTime('2016-08-15 11:56:00')。
转载请注明原文地址: https://ju.6miu.com/read-1302158.html