You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Moment.js判断聊天消息创建时间差是否超过15分钟?

解决Moment.js计算消息时间差的问题

嘿,我一眼就瞅到问题所在啦——你现在把Moment处理后的时间直接转成了格式化字符串,这就把Moment对象的时间计算能力给丢啦!格式化后的字符串只是纯文本,根本没法用来算时间差,得先保留Moment实例才行。

下面是正确的处理思路和代码:

  1. 先保留Moment对象,别急着格式化
    先把UTC时间转成本地时间的Moment实例存起来,不要马上调用.format(),这样才能用Moment自带的时间计算方法。

  2. .diff()方法计算分钟差
    Moment.js的.diff()方法专门用来算两个时间的差值,你只需要指定单位为'minutes',就能直接拿到分钟数差。

  3. 判断差值并设置flag
    拿到分钟差之后,直接判断是否大于15就行啦。

具体代码示例:

// 获取两个消息的Moment实例(不做格式化)
const currentMsgMoment = moment.utc(conversationMessages[this.index].createdDate).local();
const prevMsgMoment = moment.utc(conversationMessages[this.index - 1].createdDate).local();

// 计算两个时间的分钟差(结果为正数表示当前消息比上一条晚)
const minutesDifference = currentMsgMoment.diff(prevMsgMoment, 'minutes');

// 根据差值设置flag
const flag = minutesDifference > 15;

额外小贴士

  • 如果你的消息列表有可能出现顺序错乱(比如上一条消息的时间比当前的还晚),可以用Math.abs(minutesDifference) > 15取绝对值判断,确保不管时间顺序如何都能正确识别超过15分钟的情况。
  • 等你需要在界面上显示时间的时候,再对Moment实例调用.format("D/MM/YYYY HH:mm:ss")就好,别提前格式化浪费了Moment的功能~

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

火山引擎 最新活动