概述
zol-time 是一款适用于 JavaScript 的时间格式转换库,可以将时间戳、Date 对象、标准时间格式字符串等格式的时间转换为自定义格式的字符串。zol-time 支持年、月、日、时、分、秒、毫秒等时间单位的单个或联合格式,且精度可以自定义。本文将对 zol-time 的安装、基本用法、高级用法和注意事项等进行详细介绍。
安装
使用 npm 安装 zol-time:
npm i zol-time
基本用法
引入
在 JavaScript 文件中引入 zol-time:
const zolTime = require('zol-time');
转换时间格式
将时间戳转换为指定格式的时间字符串:
const timestamp = 1625752420677; console.log(zolTime.timestampToDate(timestamp, 'yyyy/MM/dd HH:mm:ss')); // 输出:2021/07/08 11:13:40
将 Date 对象转换为指定格式的时间字符串:
const date = new Date('2021/07/08 11:13:40'); console.log(zolTime.dateToFormat(date, 'MM-dd HH:mm')); // 输出:07-08 11:13
将标准时间格式字符串转换为指定格式的时间字符串:
const standardTimeStr = '2021-07-08T11:13:40.677Z'; console.log(zolTime.standardTimeStrToFormat(standardTimeStr, 'MM/dd/yyyy HH:mm:ss.SSS')); // 输出:07/08/2021 11:13:40.677
格式符
zol-time 支持以下格式符,其中大小写敏感,且可以与其他字符混合使用:
格式符 | 用途 | 示例 |
---|---|---|
y | 年,不含前导零 | 2021 |
yy | 年,两位数字表示,小于两位数前面补齐 0 | 21 |
yyy | 年,三位数字表示,小于三位数前面补齐 0 | 021 |
yyyy | 年,四位数字表示,小于四位数前面补齐 0 | 2021 |
M | 月份,不含前导零 | 7 |
MM | 月份,两位数字表示,小于两位数前面补齐 0 | 07 |
MMM | 月份,缩写形式,如 Jan、Feb、Mar 等 | Jul |
MMMM | 月份,全称形式,如 January、February、March 等 | July |
d | 日期,不含前导零 | 8 |
dd | 日期,两位数字表示,小于两位数前面补齐 0 | 08 |
E | 星期几,缩写形式,如 Mon、Tue、Wed 等 | Thu |
EEE | 星期几,三个字母表示,如 Mon、Tue、Wed 等 | Thu |
EEEE | 星期几,全称形式,如 Monday、Tuesday、Wednesday 等 | Thursday |
H | 小时,24 小时制,不含前导零 | 11 |
HH | 小时,24 小时制,两位数字表示,小于两位数前面补齐 0 | 11 |
h | 小时,12 小时制,不含前导零 | 11 |
hh | 小时,12 小时制,两位数字表示,小于两位数前面补齐 0 | 11 |
a | 上午/下午,小写字母表示 | am |
A | 上午/下午,大写字母表示 | AM |
m | 分钟,不含前导零 | 13 |
mm | 分钟,两位数字表示,小于两位数前面补齐 0 | 13 |
s | 秒钟,不含前导零 | 40 |
ss | 秒钟,两位数字表示,小于两位数前面补齐 0 | 40 |
S | 毫秒,不含前导零 | 677 |
SS | 毫秒,两位数字表示,小于两位数前面补齐 0 | 677 |
SSS | 毫秒,三位数字表示,小于三位数前面补齐 0 | 677 |
z | 时区缩写,与 UTC 的偏移量 | GMT+0800 |
Z | 时区偏移量,与 UTC 的差值,+ 表示东区,- 表示西区 | +0800 |
本地化
zol-time 支持设置时间格式本地化,可以设置不同语言、时区和区域的时间格式。本地化配置可以在全局或单个方法中进行。
全局配置
全局配置将影响所有 zol-time 方法的时间格式。配置参数包括语言、时区和区域名称,参数的默认值分别为 en、Asia/Shanghai 和 CN。以下示例将时间格式本地化为中文简体,时区为美国纽约,区域为美国:
zolTime.setLocale('zh-CN', 'America/New_York', 'US'); const timestamp = 1625752420677; console.log(zolTime.timestampToDate(timestamp, 'yyyy年MM月dd日 HH:mm:ss z')); // 输出:2021年07月08日 00:13:40 GMT-0400
单个方法配置
单个方法配置将影响该方法的时间格式,且不影响其他方法的时间格式。配置参数与全局配置相同。以下示例将 timestampToDate 方法的时间格式本地化为中文简体:
const timestamp = 1625752420677; console.log(zolTime.timestampToDate(timestamp, 'yyyy年MM月dd日 HH:mm:ss z', 'zh-CN')); // 输出:2021年07月08日 11:13:40 GMT+0800
获取当前 Locale
获取当前 zol-time 的本地化配置:
console.log(zolTime.getLocale()); // 输出:{ language: "en", timezone: "Asia/Shanghai", territory: "CN" }
时间戳
zol-time 提供将不同类型的时间转换为时间戳的方法。
将 Date 对象转换为时间戳:
const date = new Date('2021/07/08 11:13:40'); console.log(zolTime.dateToTimestamp(date)); // 输出:1625752420000
将标准时间格式字符串转换为时间戳:
const standardTimeStr = '2021-07-08T11:13:40.677Z'; console.log(zolTime.standardTimeStrToTimestamp(standardTimeStr)); // 输出:1625752420677
比较时间
zol-time 提供比较两个时间的方法,返回值为 1 (大于)、0 (等于)或 -1 (小于)。
比较时间戳大小:
const timestamp1 = 1625752420676; const timestamp2 = 1625752420677; console.log(zolTime.compareTimestamp(timestamp1, timestamp2)); // 输出:-1
比较 Date 对象大小:
const date1 = new Date('2021/07/08 11:13:40'); const date2 = new Date('2021/07/08 11:13:41'); console.log(zolTime.compareDate(date1, date2)); // 输出:-1
比较标准时间格式字符串大小:
const standardTimeStr1 = '2021-07-08T11:13:40.676Z'; const standardTimeStr2 = '2021-07-08T11:13:40.677Z'; console.log(zolTime.compareStandardTimeStr(standardTimeStr1, standardTimeStr2)); // 输出:-1
高级用法
格式精度
zol-time 支持自定义时间格式的精度,以减少时间字符串的长度。实现方式是在格式符后添加 '.*',其中 * 为精度参数,表示该格式符的精度为 * 毫秒或秒。以下示例将输出 2021/07/08 11:13:30:
const timestamp1 = 1625752420000; console.log(zolTime.timestampToDate(timestamp1, 'yyyy/MM/dd HH:mm:ss.1')); // 输出:2021/07/08 11:13:30
时区转换
zol-time 可以将时间戳、Date 对象和标准时间格式字符串转换为特定时区的时间字符串。以下示例将输出 GMT+0900 对应的时间:
const timestamp1 = 1625752420677; console.log(zolTime.timestampToDateByTimeZone(timestamp1, 'yyyy/MM/dd HH:mm:ss z', 'Asia/Tokyo')); // 输出:2021/07/08 12:13:40 GMT+0900
持续时间
zol-time 支持获取两个时间之间的持续时间,并以指定格式返回。时间单位包括毫秒、秒、分钟、小时、天、月和年。以下示例将输出 1 年 2 天:
const date1 = new Date('2020/07/08 10:10:10'); const date2 = new Date('2021/07/10 11:11:11'); console.log(zolTime.durationBetweenDates(date1, date2, 'yyyy年MM月dd日', '中文', true)); // 输出:1年2天
时间差
zol-time 支持获取两个时间之间的时间差,并以指定格式返回。时间差将以小于一天的方式展示。以下示例将输出 01:01:01:
const timestamp1 = 1625752420000; const timestamp2 = 1625756021000; console.log(zolTime.diffTimestamps(timestamp1, timestamp2)); // 输出:01:01:01
注意事项
- zol-time 按照当前时间格式本地化进行转换,需要设置时区、语言和区域。
- zol-time 不支持跨时区时间格式转换,需要先将时间转换为目标时区的时间再进行转换。
- zol-time 不支持大于 32 位的时间戳转换,支持的最大精度为毫秒。
- zol-time 不支持含有毫秒数的 Date 对象转换为时间戳,需要先将毫秒数设为 0 再进行转换。
- zol-time 不支持 Date 对象时区的转换,需要使用 moment.js 等库实现时区转换。
结论
zol-time 是一款强大的时间转换库,可以满足前端开发过程中的各种时间格式转换需求。zol-time 支持自定义时间格式、添加精度限制、转换特定时区时间、计算时间差和持续时间等功能,并且可以根据全局或单个方法的需要对时间格式进行本地化配置。希望本文能对你的学习和工作有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fc081e8991b448dd10a