Parse.com:查询日期和UTC

时间:2016-03-31 20:54:20

标签: javascript date parse-platform

我想根据日期字段删除对象。

目前,我使用此代码成功删除了超过1天的事件:

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

此代码删除超过14小时但不是12小时的事件...也许我必须使用UTC?我在法国(UTC + 2),这可能是为什么删除事件的时间超过14小时,而不是12小时?

如何在javascript中使用UTC?

1 个答案:

答案 0 :(得分:0)

您的代码有效,并且您对UTC问题的看法是对的 - Date.getTime()返回自UTC时间1970年1月1日以来的毫秒数。对于与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));