2014-08-30 2 views
0

나는 db (mongo)에 저장 한 날짜 (순간)를 변환하려고 시도하고 차이를 얻기 위해 현재 날짜와 비교하려고합니다. 그러나 db에서 지난 날짜를 검색하고 현재 순간을 사용할 때 diff()을 사용할 수 없습니다. db insert에 {startDate:moment(), ...}을 삽입하고 있습니다. 나는 startDate 날짜를 가져 오지 후 다음, 나는 DIFF에게당신은 어떻게 날짜를 순간으로 변환합니까?

var now = moment(); 
console.log(now.diff(startDate)) 

을 얻으려고하지만 그것은 error가 발생합니다.

js date 개체가 아닌 moment을 저장하지만 여전히 오류가 발생하므로 실제로 저장된 값과 비교하여 현재 순간과 비교하는 방법을 잘 모릅니다.

답변

0

startDate:moment()을 삽입하면 필드가 아니기 때문에 moment 개체의 내용을 저장할 수 있습니다. 예를 들어

mongo 쉘 :

> db.mycollection.insert({startDate:moment()}) 
WriteResult({ "nInserted" : 1 }) 

> db.mycollection.findOne() 
{ 
    "_id" : ObjectId("5401a7805a5b0e4e0bfe5170"), 
    "startDate" : { 
     "_isAMomentObject" : true, 
     "_i" : null, 
     "_f" : null, 
     "_l" : null, 
     "_strict" : null, 
     "_isUTC" : false, 
     "_pf" : { 
      "empty" : false, 
      "unusedTokens" : [ ], 
      "unusedInput" : [ ], 
      "overflow" : -2, 
      "charsLeftOver" : 0, 
      "nullInput" : false, 
      "invalidMonth" : null, 
      "invalidFormat" : false, 
      "userInvalidated" : false, 
      "iso" : false 
     }, 
     "_d" : ISODate("2014-08-30T10:29:20.529Z") 
    } 
} 

거기 startDate._d 필드 내에 저장 적절한 Date,하지만 난 당신이 실제로를 사용하여 startDate 필드에 단일 값을 저장한다 수행 할 작업을 생각한다 new Date() 생성자 : 예상대로

> db.mycollection.insert({startDate:new Date()}) 
WriteResult({ "nInserted" : 1 }) 

> doc = db.mycollection.findOne() 
{ 
    "_id" : ObjectId("5401a8fe5a5b0e4e0bfe5173"), 
    "startDate" : ISODate("2014-08-30T10:35:42.736Z") 
} 

지금 당신이 날짜 계산을 수행 할 수 있어야합니다 :

> var now = moment(); 

// Diff in milliseconds (http://momentjs.com/docs/#/displaying/difference/) 
> now.diff(doc.startDate) 
6825 
+1

순간에서 날짜를 구성하는 대신 순간의'.toDate()'함수를 사용해야합니다. 또는 삽입을 잠시 중단하고 매개 변수없이'new Date()'를 호출하십시오. –

+0

당신은'_d' 속성을 사용하지 말아야한다는 것이 맞습니다. 순간의 공개 API의 일부가 아닙니다. –

+0

일을 정리하려면 var date = moment(). format ('MMMM YYYY, h : mm : ss a'); 그런 다음 DB에 저장했지만 지금은 = moment() .diff ('MMMM YYYY, h : mm : ss a') 형식으로 diff했을 때 작동하지 않습니다. . 그러나 newDate (moment()) 및 moment(). toDate()를 저장하면 효과가있었습니다. 감사합니다 – Saad

관련 문제