2016-11-19 13 views
1

A流星サーバー・コードはMongoDBのコレクションを更新し、dateField値は、クライアントがdateStartdateFinishを選択し、この
ISODate("2016-11-19T00:00:00Z")比較日付

ように見えた、この
$( '入力[名前=」のように見えますval()// => "2016-11-19"

私はそれを使用してdateField以下のmongodbクエリと一致するドキュメントを取得できるようにユーザーエントリを変換します。その後、

dateToISO: (date) => { // date format in YYYY-MM-DD 
    const dArr = date.split('-'); 
    return new Date(parseInt(dArr[0]), parseInt(dArr[1]) - 1, parseInt(dArr[2])); 
} 

とコードがいくつか存在しても任意のドキュメントイベントを返すことに失敗した

 let start = utility.dateToISO(dict.get('inquiryStartDate')); 
     let end = utility.dateToISO(dict.get('inquiryEndDate')); 

////Both of the above prints: Sat Nov 19 2016 00:00:00 GMT+1100 (AEDT) 

    return myCol.find({ 
     date: { 
      $gte: start, 
      $lte: end 
     } 
     }, { 
     transform: function(doc) { 
      doc.date = moment(doc.date).format('DD/MM/YYYY'); 
      return doc; 
     } 
     }); 

ギDD/MM/YYYYの日付をユーザーに結果を提示します。どのようなアイデアをなぜ、どのように修正するか?

+0

あなたのコードには、上記の両方のプリント:Sat Nov 19 2016 00:00:00 GMT + 1100(AEDT) 'というコメントが記載されています。 00:00 GMT + 1100(AEDT) 'が返されます。 – Khang

+0

クエリから$ lte:endを削除すると機能しますか? – Veeram

+0

@Khangこの圧縮を行うには、ある日付を他の日付の形式に変換するのに最適なのは何ですか?今、日付の値が変わっても同じコードがうまく動作するので、それが問題であるかどうかを確認してください。 –

答えて

0

new Date(year、month、date)variantは、現在のシステムタイムゾーンの日付を持ちます。

比較結果が返されないのは、ローカルシステムゾーンで日付を渡すと、流星がUTC時刻であるMongo DBの日時であるため、流星がローカル日時からUTC日時に変換されます。入力日が土曜日11月19日00:00:00 GMT + 1100(AEDT)から2016年11月18日01:00:00 UTCに変更されます。

ユーザ入力の日付をUTCとして考慮します。あなたは、日付をUTCとして明示的に解析する必要があります。

new Date(Date.UTC(2016, 11, 19, 0, 0, 0, 0) 

を試してみて、クエリにこれを渡します。