2016-07-26 3 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 구문 에러 : 예기치 않은 토큰 { – mean

+0

배열이 var에 도착 같은 경우 = [ '목 2016년 7월 21일 0시 0 분 0 초 GMT + 0200', 널 (null), '토 2016년 7월 23일 0시 : 00 GMT + 0200 ','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

이 목록은 항상 하나 (또는 ​​여러) 의로 구분하여 일 연속으로 만든된다고 가정 날짜 배열

<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

배열이 정상입니다. 새로운 배열 만 문자열이 필요하지 않습니다. 문자열은 다음과 같아야합니다 : "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

관련 문제