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

使用Moment处理UTC时间筛选数据时遇类型不匹配错误求助

问题描述

需要筛选最近30分钟的数据并在UI中展示,时间采用UTC格式,使用Moment库时出现类型错误:

Javascript - Operator '>' cannot be applied to types 'Date' and 'Moment'.

用户代码如下:

let d = moment();
let d_utc = moment.utc();
var customDate = new Date();
d_utc.minutes(-30);  

filteredData = filteredData.filter((category) => {
  return category.uploaded_time > d_utc;
});
解决方法

问题核心是category.uploaded_time是原生Date类型,而d_utc是Moment对象,两者无法直接用比较运算符对比,以下两种方法可解决:

方法一:将Moment对象转为Date类型

调用Moment的toDate()方法把Moment对象转成原生Date,就能和category.uploaded_time直接比较:

// 正确获取30分钟前的UTC时间,替代原错误的minutes(-30)写法
let d_utc = moment.utc().subtract(30, 'minutes');

filteredData = filteredData.filter((category) => {
  return category.uploaded_time > d_utc.toDate();
});

注意:原代码里d_utc.minutes(-30)是错误用法,它会把分钟数设置为-30,而非减去30分钟,必须用subtract(30, 'minutes')来实现“30分钟前”的逻辑。

方法二:将Date对象转为Moment对象

把category.uploaded_time转成Moment对象,用Moment自带的isAfter()方法判断时间先后:

let d_utc = moment.utc().subtract(30, 'minutes');

filteredData = filteredData.filter((category) => {
  return moment(category.uploaded_time).utc().isAfter(d_utc);
});

这种方式更贴合Moment库的使用规范,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:01:05