亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在循環內使用時刻時的奇怪結果

在循環內使用時刻時的奇怪結果

海綿寶寶撒 2022-05-14 13:43:28
我正在嘗試使用循環內的時刻來確定兩個日期之間有多少個 60 分鐘的時間段,但我得到了奇怪的結果。const timeSlots: Moment[] = [];let startDate = moment('2020-03-09 11:00');let endDate = moment('2020-03-09 12:30');while (endDate.diff(startDate, 'minutes') >= 60) {  timeSlots.push(startDate.clone());  startDate.add(30, 'minutes');}console.log(timeSlots);<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>結果 :2020-03-09 11:002020-03-09 11:00預期的 :2020-03-09 11:002020-03-09 11:30奇怪的代碼片段有效,但在我的電腦或 https://playcode.io/上卻沒有
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

一種解決方法是使用 unix 時間戳進行計算。一小時有 3600 秒 = 3600000 毫秒:


const timeSlots = [];


let startDate = moment.utc('2020-03-09 11:00').valueOf();

let endDate = moment.utc('2020-03-09 14:30').valueOf();

while ((endDate-startDate) >= 3600000) {

      timeSlots.push(moment.utc(startDate));

      startDate += 3600000;

}


console.log(timeSlots.map(slot => slot.toString()));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

更新:

經過一些研究,似乎該console.log(timeSlots)聲明是問題所在。這會記錄一些我們不應該關心的內部屬性。如果我們使用,它似乎按預期工作:


const timeSlots = [];


let startDate = moment('2020-03-09 11:00');

let endDate = moment('2020-03-09 12:30');


while (endDate.diff(startDate, 'minutes') >= 60) {

  timeSlots.push(startDate.clone());

  startDate.add(30, 'minutes');

}


console.log(timeSlots.map(slot => slot.format()));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>


查看完整回答
反對 回復 2022-05-14
  • 1 回答
  • 0 關注
  • 72 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號