Moment.js是一个非常有用的 JavaScript 库,它提供了许多操作日期格式的函数。
为了创建 Moment 对象,可以 parse a string只需 moment("1995-12-25");
或提供格式 moment("12-25-1995", "MM-DD-YYYY");
。
另一个功能允许我们使用 relative dates : moment("1995-12-25").fromNow()//19 年前
.
但是,我找不到解析这样一个相对日期的方法。当我尝试 moment("19 years ago")
时,它只返回 Invalid date
,并且不存在任何标记来正确格式化日期。
有没有简单的方法来做到这一点?还是应该在 Github 上推荐一个缺失的功能?
最佳答案
刚刚找到chrono想看看 NLP 是否已经在 momentjs 中实现。看起来它处理将 NLP 解析为日期,可用于创建 momentjs 日期。
Simply pass a string to function chrono.parseDate or chrono.parse.
> var chrono = require('chrono-node') > chrono.parseDate('An appointment on Sep 12-13') Fri Sep 12 2014 12:00:00 GMT-0500 (CDT)
还有一个简单的例子来展示它是如何工作的
代码
const moment = require('moment')
const chrono = require('chrono-node')
let now = moment()
console.log(now)
let yrsAgo = chrono.parseDate("19 years ago")
console.log(yrsAgo)
let yrsAgoMoment = moment(yrsAgo)
console.log(yrsAgoMoment)
输出
$node test.js
moment("2017-06-30T08:29:20.938")
1998-06-30T17:00:00.000Z
moment("1998-06-30T12:00:00.000")
https://stackoverflow.com/questions/30683076/