在我的数据库中,有一个表包含一个名为receivedAt
的表,该表中的日期都像2020-09-09 22:25:30.8266667 +00:00
一样存储在UTC中
在前端,我想获取日期范围从2020-10-29 00:00:00到2020-10-29 23:59:59 pm的所有数据。
我的浏览器处于“美国/多伦多”时区偏移:-4小时。为了在数据库中正确过滤数据,我需要将在浏览器中选择的日期范围从本地时区(美国/多伦多)转换为UTC时区,然后将其发送到后端。
在前端,我尝试了几种不同的方法:
startDate: moment().startOf("day").format();
endDate: moment().endOf("day").format();
startDate: 2020-10-29T00:00:00-04:00;
endDate: 2020-10-29T23:59:59-04:00;
startDate: moment().utc().startOf("day").format();
endDate: moment().utc().endOf("day").format();
startDate: 2020-10-29T00:00:00Z;
endDate: 2020-10-29T23:59:59Z;
startDate: moment().startOf("day").toISOString();
endDate: moment().endOf("day").toISOString();
startDate: 2020-10-29T04:00:00.000Z;
endDate: 2020-10-30T03:59:59.999Z;
startDate: moment().utc().startOf("day").toISOString();
endDate: moment().utc().endOf("day").toISOString();
startDate: 2020-10-29T00:00:00.000Z;
endDate: 2020-10-29T23:59:59.999Z;
在上述4种方法中,方法1和方法3有效,而方法2和方法4不起作用。
我很困惑,因为我需要将本地时区转换为utc。为什么当我向方法中添加utc()
却无法正常工作时?另外,为什么我只使用format()
或toISOString()
方法,似乎将我的本地时区转换为utc。
有人知道答案吗?