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