如何安排明天 06:00 下午的推送通知?

How to schedule Push Notification on tomorrow 06:00 pm?

我正在尝试使用这个很酷的代码在明天下午 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 上午。但今天是 8 月 23 日,所以结果必须是这样的 - 8 月 23 日 06:00 下午。 错误在哪里?我做错了什么?

这是您使用解析默认 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();

}