javascript - 有没有办法使用 Moment.js 解析相对日期?

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/

相关文章:

c# - 如何将货币字符串格式化为整数?

python - 如何用不同的表达式格式化原始字符串?

java - 如何在 Netbeans 中配置 Java 导入的组织

python - 在 Python 中将浮点列表转换为字符串

eclipse - 在 Eclipse 格式化程序中的花括号上强制 "same line"

c# - 对信用卡号使用字符串格式

c# - 格式异常 - 日期时间和小时

javascript - 谷歌图表显示金钱而​​不是百分比

php - 在php中添加前导0

formatting - 是否可以使 PHP 错误看起来更好? Stack 可以在单独的行上跟踪输出