简介
在前端开发中,常常需要将时间戳(Timestamp)转换为易读的文本,例如“一小时前”、“昨天”、“1月4日”,这个时候就需要用到 time-ago 这个 npm 包。time-ago 此外还能够自定义时间格式、本地化等等,可以满足不同的需求。
安装
在终端中输入以下命令安装 time-ago 包。
npm install time-ago --save
使用
载入模块
使用 time-ago 需要先载入模块:
const timeAgo = require('time-ago');
转换时间戳
假设我们有一个时间戳值,可以使用以下代码来将其转换为易读的文本:
const timestamp = Date.now() - 60 * 1000; // 一分钟前 const text = timeAgo.ago(timestamp); // 返回值为 "1 minute ago" console.log(text);
可以看到,timeAgo.ago 接收一个时间戳,并返回对应的文本。在上述示例中,我们将当前时间戳往前推一分钟,并将其转换为了 "1 minute ago" 的文本。
timeAgo 还提供了很多其他的方法来转换时间戳,例如:
- timeAgo.minutesAgo(timestamp) - 返回分钟数前的文本
- timeAgo.hoursAgo(timestamp) - 返回小时数前的文本
- timeAgo.daysAgo(timestamp) - 返回天数前的文本
- timeAgo.weeksAgo(timestamp) - 返回周数前的文本
自定义格式
time-ago 还支持自定义时间格式,例如:
const timestamp = new Date(2019, 0, 1); // 2019 年 1 月 1 日 const customFormatter = timeAgo.Formatter({ template: '%s 年 %s 月 %s 日', }); const text = customFormatter.ago(timestamp); // 返回 "2019 年 1 月 1 日" console.log(text);
可以看到,在 Formatter 方法中可以传入一个对象,其中 template 属性描述了自定义格式的模板。在模板中,%s 表示一个变量,将被 time-ago 替换成对应的时间值。
本地化
time-ago 还支持本地化,只需要载入相应的语言模块即可。例如,如果需要将时间转换为中文文本,可以使用以下代码:
const timeAgo = require('time-ago'); require('time-ago/locales/zh-CN'); // 载入中文语言模块 const timestamp = Date.now() - 60 * 1000; // 一分钟前 const text = timeAgo.ago(timestamp); // 返回值为 "1分钟前" console.log(text);
可以看到,在载入中文语言模块之后,time-ago 会返回中文文本。
总结
time-ago 是一个十分实用的 npm 包,可以将时间戳转换为易读的文本。本文介绍了 time-ago 的基本使用方法,包括转换时间戳、自定义格式、本地化等等,希望能够对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67631