我有一系列日期。
例如:
[Date {Thu Jul 21 2016 00:00:00 GMT+0200}, null, Date {Sat Jul 23 2016 00:00:00 GMT+0200}, null, Date {Mon Jul 25 2016 00:00:00 GMT+0200}, Date {Tue Jul 26 2016 00:00:00 GMT+0200}, Date {Wed Jul 27 2016 00:00:00 GMT+0200}]
七个接一个的日期。 Null表示没有活动日期。
我认为:
21.07 ; 23.07 ; 25.07 - 27.07
另一个例子:
[Date {Thu Jul 21 2016 00:00:00 GMT+0200}, Date {Fri Jul 22 2016 00:00:00 GMT+0200}, null, Date {Sun Jul 24 2016 00:00:00 GMT+0200}, null, Date {Tue Jul 26 2016 00:00:00 GMT+0200}, Date {Wed Jul 27 2016 00:00:00 GMT+0200}]
七个接一个的日期。 Null表示没有活动日期。
如:
21.07 - 22.07 ; 24.07 ; 26-07 - 26-07
感谢您的帮助。
@edit:
21.07
null
23.07
null
25.07
26.07
27.07
21.07 ; 23.07 ; 25.07 - 27.07
21.07
null
23.07
null
25.07
null
27.07
21.07 ; 23.07 ; 25.07 ; 27.07
21.07
null
23.07
24.07
25.07
null
null
21.07 ; 23.07 - 25.07
21.07
22.07
23.07
24.07
25.07
null
27.07
21.07 - 25.07 ; 27.07
答案 0 :(得分:1)
假设您的列表总是由连续几天组成,由一个(或几个) null 分隔,这应该是您所期望的:
var input = [
new Date('Thu Jul 21 2016 00:00:00 GMT+0200'),
null,
new Date('Sat Jul 23 2016 00:00:00 GMT+0200'),
null,
new Date('Mon Jul 25 2016 00:00:00 GMT+0200'),
new Date('Tue Jul 26 2016 00:00:00 GMT+0200'),
new Date('Wed Jul 27 2016 00:00:00 GMT+0200')
];
function formatDay(d) {
return ('0' + d.getDate()).substr(-2, 2) + '.' +
('0' + (d.getMonth() + 1)).substr(-2, 2);
}
var result = [], end, start = null;
input.forEach(function(v, n) {
v && (end = v);
!start && (start = v);
if(start && (!v || n == input.length - 1)) {
result.push(formatDay(start) + (end == start ? '' : ' - ' + formatDay(end)));
start = null;
}
});
result = result.join(' ; ');
console.log(result);
答案 1 :(得分:0)
创建基于日期数组的字符串
<script>
var array = [];
for (i = 0; i < 10; i++) {
var date = new Date();
array.push(date);
}
</script>
<script>
arr = ['Thu Jul 21 2016 00:00:00 GMT+0200', null,'Sat Jul 23 2016 00:00:00 GMT+0200', null,'Mon Jul 25 2016 00:00:00 GMT+0200','Tue Jul 26 2016 00:00:00 GMT+0200','Wed Jul 27 2016 00:00:00 GMT+0200'];
var newarray = "";
for (i = 0; i < arr.length; i++) {
if(arr[i] !=null){
var date = new Date(arr[i]);
newarray += (date.getDate()+'.'+date.getMonth()+';');
}
}
</script>