我正在使用Javascript for Parse.com Cloud Code。 根据Parse.com,他们返回UTC时间。我在EDT(GMT -4)
我试图今天午夜的时间到达无效。 这是我的代码:
var date = new Date();
var startDay = Math.floor((date.setUTCHours(4,0,0,0) / 1000));
所以每天晚上8点之前,代码会在今天午夜返回,这就是我想要的。但是,晚上8点之后它将在明天的午夜返回。我相信原因是由于UTC日期在午夜变为今天+ 1。但是我无法弄清楚如何解决这个问题,以便我在中午获得当地日期。
PS:
我也徒劳地试过setHours(4,0,0,0)
。
如果我使用setUTCHours(0,0,0,0)
,则会在今天晚上8点返回
感谢您的帮助。
答案 0 :(得分:3)
它正确地做了一切。
从UTC的角度考虑一下。 setUTCHours(0,0,0,0)将始终将其设置为当天的午夜。
从您的角度来看(GMT-4),将日期设定为晚上8点(格林威治标准时间-4)的午夜(UTC)似乎要前进一天。
这是因为当您调用date.setUTCHours()时,首先将该时间转换为UTC,然后设置小时数。如果您在 5月18日晚上8点GMT-4 创建日期,然后调用setUTCHours(),它将首先将该日期转换为 5月19日,UTC时间上午12点。然后它将执行小时更改。
您可以采取以下措施来确保它在用户的时区当天午夜返回:
var date = new Date();
//Convert to midnight in your timezone first
date.setHours(0,0,0,0);
//Convert to midnight UTC
date.setUTCHours(0,0,0,0);
了解你的观点是非常重要的。