如何将日期显示为字符串?

时间:2016-07-26 09:23:49

标签: javascript arrays string

我有一系列日期。

例如:

[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

2 个答案:

答案 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>