在前端开发中,时间戳是一个常见的需求。很多情况下我们需要将时间戳转化为易读的相对时间,如 "3天前" 或 "1小时前" 等等。这时,可以使用 npm 包 tiny-relative-date
。
安装
使用以下命令安装 tiny-relative-date
:
npm install tiny-relative-date
使用方法
在代码中引入 tiny-relative-date
:
const relativeDate = require('tiny-relative-date');
接着,调用 relativeDate()
方法并传入一个时间戳(单位为毫秒)即可获得相对时间:
const now = Date.now(); // 当前时间戳 const timestamp = 1618421772000; // 示例时间戳 console.log(relativeDate(timestamp, now)); // 输出:2 months ago
我们也可以传入一个日期字符串作为参数,只需要保证该字符串可以被 new Date()
构造函数正确解析即可。例如:
const dateStr = '2021-04-14T12:00:00.000Z'; console.log(relativeDate(dateStr, now)); // 输出:3 weeks ago
此外,还可以传入一个 options 对象来自定义显示格式:
const options = { suffix: true, // 显示后缀(如 "ago") maxUnits: 2, // 最多显示两个时间单位 language: 'zh-CN', // 显示语言(目前支持 en 和 zh-CN) }; console.log(relativeDate(timestamp, now, options)); // 输出:2个月前
深度解析
tiny-relative-date
的实现相对简单,其代码如下:
-- -------------------- ---- ------- ----- ----- - - - ----- --------- ------ --- ----------- - -- - ----- --------- ------ ----- ----------- -- -- - ----- ------- ------ ------ ----------- ---- -- - ----- ------ ------ ------- ----------- ----- -- - ----- ------- ------ -------- ----------- ------ -- -- ----- ------ ----- - ----- -------- ------ --------- ----------- ------- -- -- -------------- - -------------- -- - ----------- ------- - --- - ----- ----------- - -------------- - --- - ------ ----- ------ - ------ -------------- --- ----------- - ---- - --------------- ----- -------- - ------ ---------------- --- ----------- - -------- - ----------------- ----- -------- - ---------------- -- ----- --- - - -- --- ---- - --------- ----- ----- -- ----------- -- --------------- -- ---------- -- - - ---------- - ---- ---- - --------- - -- ------- - ------ --- - ----- ---- - ---------------------- - ----------------- ----- ---- - ------------------- -- ---------------- ----- -------- - ---- --- - - ------------------------ - ----------------------- ------ -------- ------------------- - - - - ----------- - ----- --
该函数接收三个参数:from
、to
和 options
。其中,from
表示要显示的时间戳或日期字符串,to
表示当前时间戳(默认为 Date.now()
),options
表示一些自定义选项。
在函数内部,首先计算出两个时间戳之间的差值(单位为秒),然后根据差值选择相应的时间单位(如秒、分钟、小时等),最后格式化成易读的相对时间字符串并返回。
总结
使用 tiny-relative-date
可以轻松地将时间戳转化为易读的相对时间,方便用户阅读和理解。同时,通过深入分析其实现原理,我们也可以了解到一些有关时间处理方面的知识。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/49190