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

如何使用Moment.js验证日期是否过期?解决实现失效问题

订阅到期日期验证问题解决方案

你的代码失效的核心问题是日期字符串格式不统一:固定的订阅到期日期用的是YYYY-MM-DD h:mm:ss格式(如'2023-03-03 12:22:16'),但当前时间却被转成了DD/MM/YYYY h:mm:ss格式,两种格式的字符串字符顺序完全不同,直接比较大小逻辑必然出错。

用Moment.js正确验证的方式是直接操作日期对象,不要转成字符串:

// 将订阅到期日期解析为Moment对象(指定格式避免歧义)
const subscriptionExpireTime = moment('2023-03-03 12:22:16', 'YYYY-MM-DD h:mm:ss');
// 直接和当前时间比较
if (subscriptionExpireTime.isBefore(moment())) {
    // 这里写订阅已过期后的处理逻辑
} else {
    return reply('你的当前订阅尚未过期,请等待到期');
}

关键说明:

  • isBefore(moment()):判断订阅到期时间是否在当前时间之前,即已过期
  • 如果要判断未过期,直接用isAfter(moment())或者取反逻辑即可
  • 始终用Moment对象做日期比较,不要转成自定义格式的字符串,彻底避免格式不匹配导致的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:43:12