簡體   English   中英

Javascript / Jquery / Moment.js計算兩個日期之間的天數

[英]Javascript/Jquery/Moment.js calculate the number of days between two dates

我用Google搜索了負載和讀取負載,到目前為止浪費了大約3個小時。 我無法相信它如此艱難。

我有一個Javascript / Jquery應用程序,我安裝了moment.js插件。 我正在寫一個POS應用程序,我需要計算兩個日期之間的天數差異,因此我可以警告用戶特定的返回項目可能太舊而無法返回。

我在JS中發現這個代碼看起來不錯,似乎是流行的方式,雖然我無法讓它工作

var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2008,01,12);
var secondDate = new Date(2008,01,22);

var diffDays = Math.round(Math.abs((firstDate.getTime() -  secondDate.getTime())/(oneDay)));

我也嘗試使用Moment.js,它看起來非常整潔

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var x = a.diff(b);

后者將是我的首選技術。 但在我的情況下,我得到錯誤“oDate.diff不是一個函數”,這是我的代碼...

todaysDate = moment(new Date()).format('YYYY, MM, DD');
oDate = moment(result.Order.created).format('YYYY, MM, DD');
var diffDays = oDate.diff(todaysDate, 'days');

我懷疑問題與oDate變量的格式有關。 但我無法理解為什么。

編輯。 順便說一句,我用console.log檢查了今天日期和oDate的價值,他們今天是日期 - 2016年,09年,14日,日期 - 2016年,09年12月12日

有什么建議? 干杯

在采取差異之前不要使用格式功能。 .on你稱之為格式,它不再是時刻的對象了。 format函數將其轉換為字符串。

todaysDate = moment(new Date());
oDate = moment(result.Order.created);
var diffDays = oDate.diff(todaysDate, 'days');

您可以將日期轉換為unix時間戳( moment.unix() ),減去兩個時間戳並使用moment.duration()檢查持續時間,它類似於您的第一次嘗試

你嘗試過這樣的事嗎?

var startDate = new Date(2008, 01, 12);
var endDate = new Date(2008, 01, 22);
var duration = moment.duration(endDate.diff(startDate));
var diffDays = duration.asDays();

在這里,我使用moment.duration()diff()來獲取兩個日期持續時間之間的間隔,然后使用asDays()來獲得天數的結果...

你可以試試這個:

function showDays(firstDate,secondDate){



              var startDay = new Date(firstDate);
              var endDay = new Date(secondDate);
              var millisecondsPerDay = 1000 * 60 * 60 * 24;

              var millisBetween = startDay.getTime() - endDay.getTime();
              var days = millisBetween / millisecondsPerDay;

              // Round down.
              alert( Math.floor(days));

          }

暫無
暫無

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

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