我正在尝试这个很酷的代码,明天下午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。 错误在哪里?我做错了什么?
答案 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();
}