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

如何在React中基于MongoDB的createdAt高效显示24小时内新帖子徽章?

解决方案

不要依赖fromNow()返回的字符串判断,这种方式完全不可靠——不仅会受语言环境影响,还会漏掉“几秒前”“几分钟前”这类场景。正确的做法是直接基于时间戳的差值进行判断:

方法1:使用isAfter判断时间范围

通过创建“24小时前”的时间节点,直接判断帖子的发布时间是否在这个节点之后:

{moment(post.createdAt).isAfter(moment().subtract(24, 'hours')) && (
  <span className="new-post">new post</span>
)}

方法2:使用diff计算时间差

直接计算当前时间与发布时间的小时差,判断是否小于24:

{moment().diff(post.createdAt, 'hours') < 24 && (
  <span className="new-post">new post</span>
)}

为什么这两种方法更好?

  • 完全不依赖格式化后的文本内容,避免了字符串匹配的各种漏洞;
  • 能覆盖所有24小时内的时间场景:从几秒前到23小时59分59秒前的帖子都会正确显示徽章;
  • 逻辑清晰,代码可读性更强,也更容易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:10:30