100分!如何按日期合并连续时间段?急,高分求解!

xinquan 2008-06-30 06:51:07
现在选择到有一串日期:2008-1-1,2008-1-4,2008-1-5,2008-1-6,2008-1-7,2008-1-8,2008-1-11,2008-1-15,2008-1-16,2008-1-17,2008-1-25
需要写一个方法,把该时间段内按日期合并连续时间段为一串字符串,合并结果如下:
2008-1-1,2008-1-4~2008-1-8,2008-1-11,2008-1-15~2008-1-17,2008-1-25
编写一个方法把时间字符串中连接的时间段合并的方法!高分求解!
...全文
157 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd5816690 2008-06-30
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title></title>
<script>
var dates = [];
var beginDate = "";
var endDate = "";
var result = [];
dates[0] = "2008-1-1";
dates[1] = "2008-1-4";
dates[2] = "2008-1-5";
dates[3] = "2008-1-6";
dates[4] = "2008-1-7";
dates[5] = "2008-1-8";
dates[6] = "2008-1-11";
dates[7] = "2008-1-15";
dates[8] = "2008-1-16";
dates[9] = "2008-1-17";
dates[10] = "2008-1-25";

// 格式化
for(var i=0; i < dates.length; i++){
dates[i] = dates[i].replace(/-/g,"/");
}

var j = 0;
beginDate = dates[0];
for(var i=0; (e = dates[i]); i++){
var ms = -1;// 新日期和上一个日期之差
if(i > 0){
ms = new Date(e).getTime() - new Date(dates[i - 1]).getTime();
}

if(ms > 1*24*60*60*1000){// 两天相差1天以上
result[j] = beginDate + " ~ " + endDate;
j++;
beginDate = e;
endDate = "";
}else if(ms == 1*24*60*60*1000){// 相差1天
endDate = dates[i];
}
}
result[j] = beginDate + " ~ " + endDate;

for(var i=0; (e = result[i]); i++){
e = e.replace(/\//g,"-").replace(/ ~ $/,"");
alert(e);
}
</script>
</head>

<body>

</body>
</html>

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧