Имам данни за датите. Тя може да бъде 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
}
]
Искам да направя като "2015-07-02", "2015-07-03 ~ 2015-07-06", "2015-07-07". Ако между датата до момента има празна дата, искам да направя свързан низ като "2015-07-03 ~ 2015-07-06".
И също така използвам MySql, Java Spring, HTML, jQuery ..... Коя част е подходяща за ефективно свързване на низ. Трябва ми помощта ти!
Отговори:
1 за отговор № 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"