前言

日期比较和判断在日程管理、倒计时、有效期检查等场景中广泛使用。@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 比较方法对照

方法 示例 结果 说明
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;
    }
  })
```![在这里插入图片描述](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

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐