JSDate库使用指南
JSDate是一个轻量级JavaScript日期处理库,专门为解决复杂的时区和夏令时问题而设计。它比Moment.js体积小60%,仅35KB,但功能强大。
安装JSDate
通过npm安装:
npm install jsdate
或者使用CDN:
<script src="https://cdn.jsdelivr.net/npm/jsdate@latest/dist/jsdate.min.js"></script>
创建日期对象
JSDate提供多种创建日期对象的方式:
// 当前时间
const now = new JSDate();
// 从字符串创建
const date1 = new JSDate("2023-05-15T14:30:00");
// 从时间戳创建
const date2 = new JSDate(1684135800000);
// 从Date对象创建
const date3 = new JSDate(new Date());
基本格式化
使用.format()方法格式化日期:
const date = new JSDate();
console.log(date.format("YYYY-MM-DD")); // 2023-05-15
console.log(date.format("HH:mm:ss")); // 14:30:00
console.log(date.format("YYYY年MM月DD日 HH时mm分")); // 2023年05月15日 14时30分
时区转换
JSDate内置全球400+时区数据,支持IANA时区标识符:
const date = new JSDate();
console.log(date.toTimezone("America/New_York").format());
console.log(date.toTimezone("Asia/Shanghai").format());
console.log(date.toTimezone("Europe/London").format());
处理夏令时
JSDate自动处理夏令时转换:
// 纽约时间2023年3月12日(夏令时开始)
const dstStart = new JSDate("2023-03-12T01:59:00").toTimezone("America/New_York");
console.log(dstStart.addMinutes(1).format()); // 自动变为03:00
// 纽约时间2023年11月5日(夏令时结束)
const dstEnd = new JSDate("2023-11-05T01:59:00").toTimezone("America/New_York");
console.log(dstEnd.addMinutes(1).format()); // 仍然是01:00
日期计算
JSDate提供链式日期计算方法:
const date = new JSDate()
.addDays(7)
.subtractHours(3)
.startOf("month")
.endOf("day");
比较日期
const date1 = new JSDate("2023-01-01");
const date2 = new JSDate("2023-06-01");
console.log(date1.isBefore(date2)); // true
console.log(date1.isSame(date2, "year")); // true (同年)
console.log(date1.diff(date2, "days")); // -151
实用功能
// 获取季度
console.log(new JSDate().quarter()); // 2
// 获取星期几
console.log(new JSDate().day()); // 1 (星期一)
// 判断闰年
console.log(new JSDate("2024-01-01").isLeapYear()); // true
最佳实践
- 始终明确指定时区,避免隐式使用系统时区
- 服务端存储UTC时间,前端按需转换
- 对用户显示的时间使用其本地时区
- 处理历史日期时注意DST规则变化
- 大量日期操作时考虑性能优化




