2016-07-26 13 views
1

私は日付の配列を持っています。例えば日付を文字列として表示する方法は?

:別の後

[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

あなたの配列isUncaughtにSyntaxError:nullの予期しないトークン{ – mean

+0

あなたの配列は、このVARのようなものである場合にはARR = [ '木2016年7月21日00:00:00 GMT + 0200'、 '2016年7月23日(土)0時: 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 ']それから解決されます – mean

+0

これは実際の配列ではなく、スケッチだけです。しかし、実際の配列に基づいて文字列を作成するにはどうすればよいですか? – JakubKubera

答えて

1

のベース文字列を作成するにはヌル秒これはあなたが期待していることを行うはずです:

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);

+0

ありがとうございました。 – JakubKubera

0

1(または複数)で区切られた、あなたのリストは常に日間連続で作られると仮定すると、日付配列

<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> 
+0

アレイはOKです。新しい配列のみの文字列は必要ありません。文字列は "21.07; 23.07; 25.07 - 27.07"のようになります(日間のセミコロンと日の間のダッシュを正確に)。 – JakubKubera

+0

あなたが必要としているものを今すぐ確認してください – mean

+0

それは文字列ですが、とても良いですが、隣の日付は範囲ではありません。 "21.07; 23.07; 25.07 - 27.07" < - 26.07は25.07と27.07の間であるため(そしてセミコロンではなくダッシュ)、行方不明です。 – JakubKubera

関連する問題