2017-02-08 5 views
0

私はmoment().addを使用していますか?私のコードを使用すると、dayTime2分の値が大きくならないためです。時間x - 時間y、値15分のオブジェクトを含むmomentJsオブジェクトを分割する

目標は、昼間の値を通過する限り、dayTime2に15分を加算することです。

値の例:(明らかに私は、これらの値IRLを使用していないんだけど、momentJSオブジェクト)

  • startAt = 7 - > 7.15 - > 7.30など
  • endAt = 10
var dayTime = moment.utc(endAt).format("HH:mm"); 
var dayTime2 = moment.utc(startAt).format("HH:mm"); 

while (dayTime2 <= dayTime) { 
    var data = { 
     title: 'VAPAA AIKA', 
     type: 0, 
     startsAt: dayTime2, 
     endsAt: moment(dayTime2).add(30, 'minute') 
    }; 
    moment(dayTime2).add(15, 'minute'); 
    console.log('TIME: ' + dayTime2); 
    console.log(data); 
} 

答えて

1

あなたは正しい方法で瞬時に使用しないでください。

まずISO 8601形式でない文字列からモーメントオブジェクトを作成するにはmoment(String, String);を使用するか、入力が数字の場合moment({unit: value, ...});指定単位(hoursなど)を使用できます。

比較文字列ですが、comparing functionsisBeforeのようにしてください。

コードにもう1つ問題があると、moment(dayTime2).add(15, 'minute')は新しいモーメントオブジェクトを作成しますが、dayTime2自体を変更する必要があります。代わりにdayTime2.add(15, 'minute')を使用してください。

モーメントオブジェクトは変更可能ですので、元の値を変更したくない場合はclone()を使用する必要があります(例えばendsAtプロパティをdataオブジェクトに設定した場合など)。ここで

作業例:

var startAt = 7; 
 
var endAt = '10'; 
 
var dayTime = moment.utc(endAt, 'h'); 
 
var dayTime2 = moment.utc({h: startAt}); 
 

 
while (dayTime2.isBefore(dayTime)) { 
 
    var data = { 
 
    title: 'VAPAA AIKA', 
 
    type: 0, 
 
    startsAt: dayTime2.format('HH:mm'), 
 
    endsAt: dayTime2.clone().add(30, 'minute').format('HH:mm') 
 
    }; 
 
    dayTime2.add(15, 'minute'); 
 
    console.log('TIME: ' + dayTime2.format('HH:mm')); 
 
    console.log(data); 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

関連する問題