2016-03-31 5 views
0

日付フィールドに応じてオブジェクトを削除します。Parse.com:日付とUTCを含むクエリ

function deleteOldEvents() { 
    var today = new Date(); 
    var days = 1; 
    var time = (days * 24 * 3600 * 1000); 
    var expirationDate = new Date(today.getTime() - (time)); 

    var query = new Parse.Query('Events'); 
     // All events have more than 1 days 
     query.lessThan('date', expirationDate); 

     query.find().then(function (Events) { 
      Parse.Object.destroyAll(Events, { 
       success: function(success) {}, error: function(error) {} 
      }); 
    }); 
} 

しかし、今、私は12時間以上のものを持っているイベントを削除したいと思います:

function deleteOldEvents() { 
    var today = new Date(); 
    var time = (12 * 3600 * 1000); 
    var expirationDate = new Date(today.getTime() - (time)); 

    var query = new Parse.Query('Events'); 
     // All events have more than 12 hours 
     query.lessThan('date', expirationDate); 

     query.find().then(function (Events) { 
      Parse.Object.destroyAll(Events, { 
       success: function(success) {}, error: function(error) {} 
      }); 
    }); 
} 
瞬間のために

、私はこのコードで1日以上を持っているイベントを削除する成功します

このコードは、12時間ではなく14時間を超えるイベントを削除します。おそらく私はUTCを使用する必要がありますか?私はフランスにいます(UTC + 2)、それは12時間ではなく14時間以上のイベントを削除する理由でしょうか?

javascriptでUTCを使用するにはどうすればよいですか?

+1

理由だけではなく、正しくない 'expirationDate'にフランスのオフセットのために?あなたはすでにあなたのためにそれをやっている '時間'を持っている... –

+0

@AkshatMahajanはい、しかし、私はそれが最良の選択だったかわからなかった – Viny76

答えて

0

あなたのコードは正常に動作します。Date.getTime()は1970年1月1日以降のUTC時間をミリ秒単位で返します。 UTCと異なるタイムゾーンにある国の場合は、オフセットを組み込む必要があります。

使用Date.getTimezoneOffset() UTCの不一致を修正する:

// getTimezoneoffset returns offset in minutes, so converting to milliseconds... 
var offset = today.getTimezoneOffset()*60*1000; 
var expirationDate = new Date(today.getTime() - (time) + (offset)); 
関連する問題