如何安排明天 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();
}
我正在尝试使用这个很酷的代码在明天下午 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();
}