簡體   English   中英

Moment.js-如果日期不同,則無法正確計算日期之間的.diff

[英]Moment.js - Can't calculate .diff between dates properly if they are in different days

有人可以解釋一下為什么這不能正常工作。 下面是一個使用moment.js來計算當前時間和可變時間之間的差異的代碼。

           //breakfast
           var breakfasttimeleft = moment(person.breakfast, 'HH:mm');
           console.log("Person breakfast is at:  " + person.breakfast + " -- Current time is at: " + currenttime);
           console.log(breakfasttimeleft.diff(now, 'minutes'));

           //lunch
           var lunchtimeleft = moment(person.lunch, 'HH:mm');
           console.log("Person lunch is at:  " + person.lunch + " -- Current time is at: " + currenttime);
           console.log(lunchtimeleft.diff(now, 'minutes'));

           //dinner
           var dinnertimeleft = moment(person.dinner, 'HH:mm');
           console.log("Person dinner is at:  " + person.dinner + " -- Current time is at: " +  currenttime);
           console.log(dinnertimeleft.diff(now, "minutes"));
        })

這里是輸出:

CONSOLE LOG
Person breakfast is at:  18:35 -- Current time is at: 18:35
0
Person lunch is at:  23:35 -- Current time is at: 18:35
300
Person dinner is at:  04:35 -- Current time is at: 18:35
-840

晚餐在某些地方是完全混亂的,例如在上面和其他地方,它工作得很好。 基本上..如果另一個日期在另一天,它不知道如何查詢小時,因此它將查詢當日這兩個小時之間的差異。

18:35至04:35。 假設是從上午18:35到04:35,大約是10個小時。 相反,它所做的是計算從早上04:35到當天晚18:35的時間。 我該如何解決此問題才能使其正常工作?

看來我也必須聲明一天。我如何格式化它,所以它是Day + Hours + Minutes

好吧,您只是在為它提供時間,但是它也必須存儲一些日期。 如果您不提供日期,它只會被初始化為當前日期,這正是您所遇到的情況。

而且,根本沒有時間知道您想要設置的日期。 您必須自行設置日期。

最簡單的方法是在創建的日期中添加一天dinnertimeleft.add(1, 'd')

如果您也想提供日期(最好是完整的日期),則可以使用以下格式字符串: YYYY-MM-DD HH:mm或根據文檔創建您自己的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM