我正在使用luxon.js并要检查,因为用户的年龄超过21岁。
我正在使用的代码

const isTooYoung = date =>
  DateTime.fromFormat(date, 'dd.MM.yyyy')
    .diffNow()
    .as('years') < -21;

但是对于今天(18.11.2019),两个人都打电话:
console.log(isTooYoung('15.11.1998')); // true => incorrect
console.log(isTooYoung('20.11.1998')); // true => correct, this user is not 21 year old yet

小提琴:http://jsfiddle.net/zh4ub62j/1/

那么,解决问题检查的正确方法是什么,用户的年龄超过x年吗?

最佳答案

持续时间单位之间的转换是有损失的,因为年的长度不尽相同,并且Luxon“失去”了持续时间来自那个特定时间跨度的知识。在文档中有关于此的部分:https://moment.github.io/luxon/docs/manual/math.html#losing-information

幸运的是,解决方法很容易:只需数年即可完成比较。然后,Luxon将知道按照实际日历年进行数学运算:

// now is 27.11.2019

const isTooYoung = date =>
  luxon.DateTime.fromFormat(date, 'dd.MM.yyyy')
    .diffNow('years')
    .years < -21;

console.log(isTooYoung('15.11.1998'))
console.log(isTooYoung('30.11.1998'))

小提琴:http://jsfiddle.net/j8n7g4d6/

关于javascript - Luxon.js得到现在和输入日期之间的差异(以年为单位),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58913032/

10-11 05:35