将Moment代码迁移至Luxon时遇类型错误及结果不符问题
问题解决方案
1. 解决参数缺失报错(2554)
luxon.DateTime.fromISO() 是解析ISO格式时间字符串的方法,必须传入时间参数。要获取当前时间,应使用 luxon.DateTime.now()。
2. 解决类型不匹配错误(2365)
Luxon 的 diff() 方法返回 Duration 对象,无法直接与数字比较。需调用 as('hours') 方法将 Duration 转换为以小时为单位的数值,才能进行大小判断。
3. 修正逻辑以匹配预期输出
你的 Moment 代码逻辑是计算当前时间与Unix时间戳(毫秒)为1的时间点的小时差值,再判断是否≥48。而当前 Luxon 代码是计算当前时间减去1小时的差值,逻辑完全不符,导致输出false。
修正后的 Luxon 代码:
const lastActivityLoaded = 1; console.log( `This keys luxon Method 2 : `, luxon.DateTime.now().diff(luxon.DateTime.fromMillis(lastActivityLoaded), 'hours').as('hours') >= 48 ); // 输出true
如果实际需求是判断当前时间距离某个时间点(比如1小时前)是否超过48小时,可再调整逻辑,但上述代码完全对齐你提供的 Moment 示例逻辑,会得到预期的true结果。
内容的提问来源于stack exchange,提问作者GCT
相关产品推荐
相关产品推荐

