鸿蒙三方库 | harmony-utils之DateUtil日期比较与判断详解
·
前言
日期比较和判断在日程管理、倒计时、有效期检查等场景中广泛使用。@pura/harmony-utils 的 DateUtil 封装了日期比较和判断方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、DateUtil比较核心API
DateUtil 提供了以下日期比较方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
isBefore(date1, date2) |
date1是否在date2之前 | boolean | 过期检查 |
isAfter(date1, date2) |
date1是否在date2之后 | boolean | 生效检查 |
isSameDay(date1, date2) |
是否同一天 | boolean | 日期比较 |
isToday(date) |
是否今天 | boolean | 今日标记 |
isWeekend(date) |
是否周末 | boolean | 工作日判断 |
isWorkday(date) |
是否工作日 | boolean | 排班判断 |
1.1 核心特性
- 简洁易用:封装复杂逻辑为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 语义清晰:方法名直观表达比较含义
1.2 比较方法对照
| 方法 | 示例 | 结果 | 说明 |
|---|---|---|---|
| isBefore | 1月1日 vs 6月1日 | true | 前者在后 |
| isAfter | 6月1日 vs 1月1日 | true | 后者在先 |
| isSameDay | 同一天 | true | 同一天 |
| isToday | 今天 | true | 今日判断 |
二、完整使用步骤
2.1 安装依赖
ohpm install @pura/harmony-utils
2.2 日期比较
import { DateUtil } from '@pura/harmony-utils';
Button('日期比较')
.width('100%')
.onClick(() => {
try {
let d1 = new Date(2024, 0, 1);
let d2 = new Date(2024, 5, 1);
this.result = `d1 < d2: ${DateUtil.isBefore(d1, d2)}\nd1 > d2: ${DateUtil.isAfter(d1, d2)}`;
} catch (e) {
this.result = '异常: ' + e;
}
})
2.3 今天判断
Button('今天判断')
.width('100%')
.onClick(() => {
try {
let today = new Date();
let isToday = DateUtil.isToday(today);
let isWeekend = DateUtil.isWeekend(today);
this.result = `是否今天: ${isToday}\n是否周末: ${isWeekend}`;
} catch (e) {
this.result = '异常: ' + e;
}
})
```
## 三、完整页面示例
```typescript
import { DateUtil } from '@pura/harmony-utils';
@Entry
@Component
struct DateCompareDemo {
@State result: string = '';
build() {
Column({ space: 12 }) {
Button('日期比较').width('100%').onClick(() => {
let d1 = new Date(2024, 0, 1);
let d2 = new Date();
this.result = `d1在d2前: ${DateUtil.isBefore(d1, d2)}`;
});
Button('今日判断').width('100%').onClick(() => {
this.result = `今天: ${DateUtil.isToday(new Date())}\n周末: ${DateUtil.isWeekend(new Date())}`;
});
Text(this.result).fontSize(14).fontColor('#333333')
}
.padding(16)
}
}
四、进阶用法
4.1 有效期检查
import { DateUtil, ToastUtil } from '@pura/harmony-utils';
function checkExpiry(expiryDate: Date): boolean {
if (DateUtil.isBefore(expiryDate, new Date())) {
ToastUtil.show('已过期');
return false;
}
return true;
}
4.2 工作日判断
function getWorkdayLabel(date: Date): string {
return DateUtil.isWorkday(date) ? '工作日' : '休息日';
}
五、注意事项
- 时间部分:isSameDay只比较日期,忽略时间部分
- 时区影响:比较基于本地时区
- 周末定义:isWeekend通常指周六和周日
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - 节假日:isWorkday不包含法定节假日判断
六、常见问题
Q1: isSameDay忽略时间部分吗?
是的,isSameDay只比较年月日,忽略时分秒。
Q2: isWeekend包含周五吗?
不包含,isWeekend通常只判断周六和周日。
Q3: isWorkday考虑法定节假日吗?
不考虑,isWorkday仅判断周一到周五,法定节假日需额外处理。
Q4: isBefore对相同日期返回什么?
返回false,因为相同日期既不在之前也不在之后。


总结
DateUtil 的日期比较和判断方法为日期逻辑提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现有效期检查、工作日判断等功能。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。
更多推荐


所有评论(0)