You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Moment.js或Date查询昨日0点到23:59的数据库数据

问题原因

你出现时间差的核心原因是运行环境时区和数据库存储的createdAt字段时区不匹配,国内环境通常是东8区(UTC+8),而MongoDB等数据库默认存储UTC时间、Moment默认读取运行环境本地时区,就会出现8小时左右的时间偏差。

正确参数设置

查询时建议用$lt 今日0点替代手动写昨日23:59:59,能覆盖毫秒级时间精度,避免数据遗漏,根据你的数据库存储时区选对应方案即可:

方案1:数据库createdAt存储的是北京时间(东8区)

// 昨日0点整
const startYest = moment().subtract(1, 'day').startOf('day').toDate()
// 今日0点整
const endYest = moment().startOf('day').toDate()

方案2:数据库createdAt存储的是UTC时间(数据库默认配置)

直接固定时区偏移量即可对齐北京时间:

// 固定东8区时区偏移
const tzOffset = 8
// 昨日北京时间0点对应的UTC时间
const startYest = moment().utcOffset(tzOffset).subtract(1, 'day').startOf('day').toDate()
// 今日北京时间0点对应的UTC时间
const endYest = moment().utcOffset(tzOffset).startOf('day').toDate()

内容的提问来源于stack exchange,提问作者julz oh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:39:01