如何将sperated日期字符串转换为连续日期字符串

时间:2015-07-09 07:36:16

标签: javascript java mysql date

我有日期数据。它可以是Mysql数据,Java数组列表或javascript json数组。

[
{
    start=2015-07-02,
    id=3
},
{
    start=2015-07-03,
    id=4
},
{
    start=2015-07-06,
    id=5
},
{
    start=2015-07-07,
    id=8
}
]

我想和#34; 2015-07-02"," 2015-07-03~2015-07-06"," 2015-07-07&# 34 ;. 如果日期与日期之间有空白日期,我想制作连接字符串,如" 2015-07-03~2015-07-06"。

而且,我还使用MySql,Java Spring,HTML,jQuery ..... 哪个部分适合于有效地建立连接日期字符串。 我需要你的帮助!

1 个答案:

答案 0 :(得分:1)

您可以检查连续日期之间的差异(以毫秒为单位),以检查是否存在超过一天的差异。假设日期按递增顺序排序(从最早到最晚)并且没有重复,如果连续日期之间的差异不是一天,那么我们可以假设它确定了日期范围。

您可以找到一些打印完成此操作的JavaScript代码。

var dates = [{ start:'2015-07-02', id:3 }, { start:'2015-07-03', id:4 }, { start:'2015-07-06', id:5 }, { start:'2015-07-07', id:8 }];

var dateRangeString = '';

for ( var i = 0; i < dates.length; i++) {

  if (i === dates.length-1) {
    dateRangeString += '"' + dates[i].start + '"';
  } else {
    var currentDate = new Date(dates[i].start);
    var nextDate = new Date(dates[i+1].start);

    if (nextDate.getTime() - currentDate.getTime() == 86400000) {
      dateRangeString += '"' + dates[i].start + '", ';
    } else {
      dateRangeString += '"' + dates[i].start + ' ~ ' + dates[i+1].start + '", ';
      i++;
    }
  }
}

// dateRangeString has your dates and date ranges.
// "2015-07-02", "2015-07-03 ~ 2015-07-06", "2015-07-07"