前言

日期比较和判断在日程管理、倒计时、有效期检查等场景中广泛使用。@pura/harmony-utilsDateUtil 封装了日期比较和判断方法。本文将从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 比较方法对照

方法示例结果说明
isBefore1月1日 vs 6月1日true前者在后
isAfter6月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;
    }
  })
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a6990fffa7bd4df899d2174827a4f00d.png#pic_center)




## 三、完整页面示例

```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) ? '工作日' : '休息日';
}

五、注意事项

  1. 时间部分:isSameDay只比较日期,忽略时间部分
  2. 时区影响:比较基于本地时区
  3. 周末定义:isWeekend通常指周六和周日
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 节假日:isWorkday不包含法定节假日判断

六、常见问题

Q1: isSameDay忽略时间部分吗?

是的,isSameDay只比较年月日,忽略时分秒。

Q2: isWeekend包含周五吗?

不包含,isWeekend通常只判断周六和周日。

Q3: isWorkday考虑法定节假日吗?

不考虑,isWorkday仅判断周一到周五,法定节假日需额外处理。

Q4: isBefore对相同日期返回什么?

返回false,因为相同日期既不在之前也不在之后。

在这里插入图片描述
在这里插入图片描述

总结

DateUtil 的日期比较和判断方法为日期逻辑提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现有效期检查、工作日判断等功能。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐