如何在明天06:00 pm安排推送通知?

时间:2015-08-22 17:26:49

标签: parse-platform unity3d push-notification

我正在尝试这个很酷的代码,明天下午06:00发送推送通知。

Parse.Cloud.define("tomorrowIn18", function(request, response)
{
var query = new Parse.Query(Parse.Installation);
query.equalTo('installationId', request.installationId);

query.find({
    success: function(object){
        var inst = object[0];
        var timeZone=inst.get("timeZone").toString();

        var tomorrow =new Date();
        tomorrow.setHours(tomorrow.getHours()+24);
        tomorrow.setHours(18+parseInt(timeZone));
        tomorrow.setMinutes(0);

        Parse.Push.send({
          where: query,
          data: {
            alert: "Your Friends Await you!" 
          },
          push_time: tomorrow
        }, {
          success: function() {
            response.success("done "+tomorrow);
          },
          error: function(error) {
            response.error(error);
          }
        });
    },
    error: function(error)
    {
        response.error(error);
    }
});
});

在推送日志中,我看到 - 8月24日00:00 am。但今天是8月23日所以结果必须是这样的 - 8月23日下午06:00。 错误在哪里?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正在使用解析默认Utc时区的时区问题,这就是您获得此差异的原因。这是您的时区和解析默认时区之间的差异。您可以通过以下功能参考获得当地时间 Convert date to another timezone in JavaScript并计算偏移量。

var offset = new Date().getTimezoneOffset();

// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(city, offset) {

// create Date object for current location
d = new Date();

// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);

// create new Date object for different city
// using supplied offset
nd = new Date(utc + (3600000*offset));

// return time as a string
return "The local time in " + city + " is " + nd.toLocaleString();

}