2016-09-14 15 views
4

私はグーグルロードと読み込みロードを行っており、これまでに約3時間を無駄にしていました。私はそれほど厳しいとは信じられません。Javascript/Jquery/Moment.jsは2つの日付の間の日数を計算します

私はJavascript/Jqueryアプリケーションを持っていますが、私はmoment.jsプラグインをインストールしています。 私はPOSアプリケーションを作成しており、2つの日付間の日数の差を計算する必要があるため、返されるアイテムが古すぎる可能性があることをユーザーに警告できます。

私は、私はちょうどそれが

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を使用して、これを試してみました、よさそうだし、それを行うための一般的な方法であるように思われた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'); 

私はこの問題は、大館変数の形式で行うことです疑います。しかし、私はなぜうまくいかない。

EDIT。ちなみに私はにconsole.logでtodaysDateと大館の値をチェックし、彼らは todaysDateある - 何かアドバイス2016、09、12

から2016、09、14 大館? 乾杯

答えて

4

違いを取る前にフォーマットを使用しないでください。 。あなたはそれをモーメントオブジェクトではない形式と呼びます。 format関数はそれを文字列に変換します。

+0

私はこれを最初に試しましたが、Date()とresult.Order.createdの形式を見ると全く異なります。後者はこのような "2016-09-12 11:33:40"のようなMySQLデータベース形式です –

+0

これは正常に働いて..ありがとう。私は昨夜午前2時にコーディングしていたので、最初に試したときになぜそれがなかったのか分かりません。しかし、感謝:) –

0

あなたはこれを試すことができます。

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)); 

      } 
1

は、あなたがこのような何かを試してみましたか?ここで

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(); 

私はあなたがUnixタイムスタンプ(moment.unix())に日付を変換することができ

+0

私のデータを使用してこの提案を試しました。これは私のコードです\t \t \t \t var startDate = new Date(result.Order.created); \t \t \t \t var endDate = new Date(); console.logでは、両方の日付が次のようにフォーマットされました: "Wed Sep 14 2016 11:45:37 GMT + 0100(GMT夏時間)"そして私はこのエラーを受け取ります: "pos.js:1588 Uncaught TypeError:endDate.diff is関数ではありません " –

2

...日で結果を得るために、2つの日付の時間間隔を取得するためにmoment.duration()diff()を使用してから、asDays()、 2つのタイムスタンプを減算し、継続時間を確認するにはmoment.duration()を使用してください。これは最初の試行に似ています

関連する問題