使用Luxon获取自动格式化相对日期时numeric:auto配置未生效如何解决
解决方法
你需要在toRelative的配置中新增unit: 'days'参数,指定以天为单位计算相对时间,配合numeric: 'auto'即可实现预期效果:
const {DateTime} = require('luxon'); console.log(DateTime.fromMillis(Date.now() - 10090909).toRelative({ numeric: 'auto', unit: 'days' })); // 输出为 today
原配置不生效的原因
未指定计算单位时,Luxon会根据时间差自动选择粒度更小的单位(如小时、分钟),但numeric: 'auto'仅在对应单位的差值为0时才会返回语义化表述,以天为单位计算时,小于24小时的差值会被判定为0天,即可输出today。
如果你的需求是严格按自然日判断“同日”(比如昨天23点和今天1点差2小时,但不属于同一天,不需要显示为today),可以增加自然日判断逻辑:
const targetDt = DateTime.fromMillis(Date.now() - 10090909); const nowDt = DateTime.now(); const relativeText = targetDt.hasSame(nowDt, 'day') ? 'today' : targetDt.toRelative({ numeric: 'auto', unit: 'days' }); console.log(relativeText);
内容的提问来源于stack exchange,提问作者Baqir Khan
相关产品推荐
相关产品推荐

