为了解决时间问题,我开源了两个库

2,503 阅读3分钟

时间处理是软件开发中不可避免的需求,无论是时间格式化、时区切换、还是传统的公历农历转换、节假日、生肖等。如果能有一个好的工具库,便可以极大地简化了时间处理和日历相关功能的实现,这就对我的工具库开发提出了要求。针对开发中遇到的时间问题,我将需求分类了两类:时间处理和日历处理。

时间处理库 datex

QQ20250122-224048.png datex 作为一款功能强大的时间格式化工具,无论是在基础的时间格式化、复杂的时间操作,还是在时区处理和本地化方面,都展现出了卓越的性能和易用性。侧重于对时间的处理,包括时间格式化,时间的增减计算,时间范围求值,时区的切换等。

文档地址: passer-by.com/datex/

仓库地址: github.com/mumuy/datex…

时间格式化

datex().format('YYYY-MM-DD HH:mm:ss');
输入 示例 描述
YY 18 两位数的年份
YYYY 2018 四位数的年份
M 1-12 月份,从 1 开始
MM 01-12 月份,两位数
MMM 1月-12月/Jan-Dec 缩写的月份名称
MMMM 一月-十二月/January-December 完整的月份名称
D 1-31 月份里的一天
DD 01-31 月份里的一天,两位数
H 0-23 小时
HH 00-23 小时,两位数
h 1-12 小时, 12 小时制
hh 01-12 小时, 12 小时制, 两位数
m 0-59 分钟
mm 00-59 分钟,两位数
s 0-59
ss 00-59 秒,两位数
S 0-9 毫秒,一位数
SS 00-99 毫秒,两位数
SSS 000-999 毫秒,三位数
Z -05:00 UTC 的偏移量
ZZ -0500 UTC 的偏移量,两位数
A AM / PM 上午 下午 大写
a am / pm 上午 下午 小写
W 0 0-6,分别表示星期日-星期六
WW 周一 周x
WWW 星期日 星期x
Do 1st... 31st 带序数词的月份里的一天
x 1410715640 Unix时间戳(秒)
X 1410715640579 Unix时间戳(毫秒)

时间计算

获取当前时间距离新中国成立多少天

datex().diffWith('1949-10-01','day');

时区切换

获取当前东京时间

datex().switchTimezone('Asia/Tokyo').format();

实现全球各个国家时间

在全球化的应用开发中,时区处理是一个绕不开的话题。datex 提供了全面的时区支持。

通过switchTimezone方法,能轻松设置实例的时区。例如,datex('2024-10-01').switchTimezone('Asia/Shanghai'),这样就能确保时间在上海时区下正确显示和处理。同时,getTimezone方法可以获取当前实例的时区设置。datex 内部使用了标准的时区数据库,支持几乎所有的时区标识,如常见的'Asia/Shanghai'、'America/New_York'。

QQ20250122-224104.png

演示地址: passer-by.com/datex/timez…

日历处理库

项目分为日历处理脚本库calendar.js和万年历组件widget-calendar.js。脚本库用于业务中对公历和农历日期的转换;万年历则直接用于用户界面中,集合了法定节假日等信息。

演示地址: passer-by.com/calendar/

仓库地址: github.com/mumuy/calen…

日历处理脚本库

// 通过农历获取当日信息,如:2023年闰二月初十
calendar.getDateByLunar(2023,2,10,true);

// 通过公历获取当日信息,如:2022年10月1日
calendar.getDateBySolar(2022,10,1);

// 今天
calendar.getToday();

万年历组件

QQ20250122-225924.png