我正在为Parse.com云代码使用Javascript。根据Parse.com,他们返回UTC时间。我在EDT(GMT -4)
我正试图将今天的日期设为午夜,但无济于事。这是我的代码:
var date = new Date();
var startDay = Math.floor((date.setUTCHours(4,0,0,0) / 1000));
因此,每天的晚上8点之前,代码都会返回我想要的午夜今天的日期。但是,在晚上8点之后,它将返回明天的午夜日期。我相信原因是由于UTC日期在午夜更改为Today + 1。但是我无法弄清楚如何解决这个问题,以便在午夜获得本地日期。
PS:我也徒劳地尝试了setHours(4,0,0,0)
。如果我使用setUTCHours(0,0,0,0)
,它将返回今天晚上8点的日期
谢谢您的帮助。
它所做的一切正确。
从UTC的角度考虑。 setUTCHours(0,0,0,0)
始终将其设置为当天的午夜。
不过从您的角度来看(GMT-4),将日期设置为午夜(UTC)晚上8点(GMT-4)似乎会向前一天。
这是因为当您呼叫date.setUTCHours()
时,它将首先将该时间转换为UTC,然后设置小时数。如果您在格林威治标准时间5月18日,晚上8点创建日期,然后调用setUTCHours()
,它将首先将该日期转换为UTC 5月19日,凌晨12点]。然后它将执行小时更改。
您可以执行以下操作来确保它在与用户时区同一天的午夜返回:
const 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);