简介
在前端开发中,我们常常需要对日期进行处理,如果我们要将日期字符串转换成某一种时间格式,我们可以使用 JavaScript 中自带的 Date 对象。使用 Date 对象可以轻松地将日期格式化,但如果要将日期转换成“几分钟前”或“一小时前”这样的相对时间格式,就需要在 JavaScript 中使用第三方库来完成。
其中,npm 上有一个非常好用的第三方库叫做 fromnow,它可以将时间转换成相对时间的格式。
安装
使用 npm 安装 fromnow 可以以简洁优雅的方式将其集成到你的项目中。
npm install fromnow
使用
var fromnow = require('fromnow'); console.log(fromnow(new Date() - 7200000)); console.log(fromnow(Date.now() - 7200000)); console.log(fromnow('2019-06-05T08:08:08Z'));
以上三种情况分别输出:
2 hours ago 2 hours ago a year ago
fromnow 函数接受两个参数:
- date 表示你需要转换的时间,可以是 Date 类型,时间戳类型,也可以是符合特定格式的字符串格式类型。
- suffix 一个 boolean 类型的参数,在输出相对时间字符串的末尾添加一个“ago”的后缀,默认为 true。
例如,使用以下代码可以获取相对于指定时间的时间字符串:
var fromnow = require('fromnow'); var beforeTwoHours = new Date() - 7200000; console.log(fromnow(beforeTwoHours, false));
输出结果为:
2 hours
可选配置
fromnow 支持一些可选配置参数:
- max: 可以控制最大返回时间范围。这个参数是一个数字类型,表示从当前时间或者指定时间往前的最大时间段。默认情况下,max 为 12 个月。如果 max 的值为 0,则返回 fromnow 的基于年份的输出(例如 2年、3年)。
- suffix: 可以选择是否在返回值中包含“ago”或“remaining”字符串。如果 suffix 为 false,则不会添加“ago”或“remaining”到返回字符串末尾,默认为真。
- zero: 可以选择零值的输出方式。默认情况下,当剩余时间为 0 时,output 参数值会返回空字符串。但是,如果 zero 设置为 true,则会输出“just now”或“now”(具体取决于 suffix 参数的值)。
例如,如果要获取一小时前的相对时间字符串,需要这样写:
var fromnow = require('fromnow'); console.log(fromnow(Date.now() - 3600000, { suffix: false }));
输出:
1 hour
如果想要获取四个月前的相对时间字符串,可以这样写:
var fromnow = require('fromnow'); console.log(fromnow(new Date('2020-01-01T00:00:00Z').getTime(), { max: 14 }));
输出:
4 months ago
注意,添加 max 属性时,返回的相对时间字符串中,月、周、天可能变为了年,这是因为 fromnow 中 day、week、month、year 的长度是等价的。
总结
以上就是关于 npm 上 fromnow 包的使用教程。使用 fromnow 可以轻松将日期转换成相对时间格式,方便用户阅读,提高用户体验。同时,fromnow 还支持一些可选的配置参数,可以修饰你的输出内容。
示例代码
var fromnow = require('fromnow'); console.log(fromnow(new Date() - 7200000)); console.log(fromnow(Date.now() - 7200000)); console.log(fromnow('2019-06-05T08:08:08Z')); console.log(fromnow(new Date() - 3600000, { suffix: false })); console.log(fromnow(new Date('2020-01-01T00:00:00Z').getTime(), { max: 14 }));
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f116c17403f2923b035c26b