2017-01-08 20 views
0

私の目標はスナップチャットのような機能を構築することです.24時間後に私が投稿するコンテンツは削除されます。私は現在の時間が過去24時間を過ぎているかどうかをチェックするAPIを作成したい、それが過去のものであればそれを削除し、作成された時間と現在の時間をチェックし、これらの2つの時間を比較する。時間差を確認する24時間後にモーメントを使用

私は瞬時にデータベースに日付/時刻を格納しています。私は今

11:31 PM 8 Jan 2017 

は時間が今以上であると仮定したコンテンツを投稿する場合は、私のデータベース・コードは、例えば、この

var mongoose = require('mongoose'); 
var moment = require('moment'); 

var ItemPost = new Schema({ 
    name: String, 
    created: { type: Date, default: moment() }, 
    timeLeft: { type: Number, default: 24 }, 
}); 

のように見えることを言ってみましょう。たとえば、9時間が経過し、現在の時刻が

08:31 PM 9 Jan 2017 

の場合、作成された日付から24時間はどのようにして取得できますか?

私の試み

function checkTime(item) { 
    var currentTime = moment(); 
    // assume item is an ItemPost object from the database 
    var timeStore = item.created() 

    // Im stuck here, I tried various codes. But nothing has worked so Far. 
    return data; 

} 

は私が望む結果があれば、私の目標に近づくの私の本当の試みがうまく

function test0() { 

    var currentTime = moment(); 
    var timeStored = moment().subtract(7, 'hours'); 

    var hoursMinus = timeStored.fromNow(currentTime); 
    console.log(hoursMinus); // 7 hours - it is a string 

    timeDiff = hoursMinus.substr(0, hoursMinus.indexOf(' ')); // will get just 7 

    var timeLeft = 24; // Default data from database 

    console.log(timeLeft - parseInt(timeDiff)); 
} 

さて、このソリューションの作品です

console.log(checkTime(item)); // 1 or 1 hour 

です私は減算する

時間があれば
var timeStored = moment().subtract(7, 'hours'); 

しかし、それは動作しません以上または同等以上23

var timeStored = moment().subtract(23, 'hours'); 
var hoursMinus = timeStored.fromNow(currentTime); 
console.log(hoursMinus); // Will return "a day" 

私の目標は返すことです私のアルゴリズムのための悪い値としてa dayを返します

hoursMinus元の作成日付から1 hour leftまたは7 hours leftというデータどんな助けもありがとう。

答えて

3

瞬間diffを使用できます。

ここで作業例:

function checkTime(item) { 
 
    var currentTime = moment(); 
 
    var timeStore = moment(item.created); 
 
    
 
    return currentTime.diff(timeStore, 'h'); 
 
} 
 

 
// Example Date object representing 5 hours ago 
 
var item = {created: moment().subtract(5, 'h').toDate()}; 
 
var res = checkTime(item); 
 
console.log(res); // 5
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

+0

が答えてくれてありがとう、私はすぐにそれをしようとします。 – sinusGob

+0

@sinusGobすべてが問題ないかどうかを教えてください。問題が解決した場合は、回答を受け入れることを忘れないでください。 – VincenzoC

+0

ありがとうございます! – sinusGob

関連する問題