前言日期比较和判断在日程管理、倒计时、有效期检查等场景中广泛使用。pura/harmony-utils的DateUtil封装了日期比较和判断方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、DateUtil比较核心APIDateUtil提供了以下日期比较方法方法说明返回类型使用场景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 安装依赖ohpminstallpura/harmony-utils2.2 日期比较import{DateUtil}frompura/harmony-utils;Button(日期比较).width(100%).onClick((){try{letd1newDate(2024,0,1);letd2newDate(2024,5,1);this.resultd1 d2:${DateUtil.isBefore(d1,d2)}\nd1 d2:${DateUtil.isAfter(d1,d2)};}catch(e){this.result异常: e;}})2.3 今天判断Button(今天判断).width(100%).onClick((){try{lettodaynewDate();letisTodayDateUtil.isToday(today);letisWeekendDateUtil.isWeekend(today);this.result是否今天:${isToday}\n是否周末:${isWeekend};}catch(e){this.result异常: e;}}) ## 三、完整页面示例typescriptimport{DateUtil}frompura/harmony-utils;EntryComponentstruct DateCompareDemo{Stateresult:string;build(){Column({space:12}){Button(日期比较).width(100%).onClick((){letd1newDate(2024,0,1);letd2newDate();this.resultd1在d2前:${DateUtil.isBefore(d1,d2)};});Button(今日判断).width(100%).onClick((){this.result今天:${DateUtil.isToday(newDate())}\n周末:${DateUtil.isWeekend(newDate())};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 有效期检查import{DateUtil,ToastUtil}frompura/harmony-utils;functioncheckExpiry(expiryDate:Date):boolean{if(DateUtil.isBefore(expiryDate,newDate())){ToastUtil.show(已过期);returnfalse;}returntrue;}4.2 工作日判断functiongetWorkdayLabel(date:Date):string{returnDateUtil.isWorkday(date)?工作日:休息日;}五、注意事项时间部分isSameDay只比较日期忽略时间部分时区影响比较基于本地时区周末定义isWeekend通常指周六和周日初始化依赖使用前需确保AppUtil.init()已调用节假日isWorkday不包含法定节假日判断六、常见问题Q1: isSameDay忽略时间部分吗是的isSameDay只比较年月日忽略时分秒。Q2: isWeekend包含周五吗不包含isWeekend通常只判断周六和周日。Q3: isWorkday考虑法定节假日吗不考虑isWorkday仅判断周一到周五法定节假日需额外处理。Q4: isBefore对相同日期返回什么返回false因为相同日期既不在之前也不在之后。总结DateUtil的日期比较和判断方法为日期逻辑提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现有效期检查、工作日判断等功能。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。
鸿蒙三方库 | harmony-utils之DateUtil日期比较与判断详解
前言日期比较和判断在日程管理、倒计时、有效期检查等场景中广泛使用。pura/harmony-utils的DateUtil封装了日期比较和判断方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、DateUtil比较核心APIDateUtil提供了以下日期比较方法方法说明返回类型使用场景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 安装依赖ohpminstallpura/harmony-utils2.2 日期比较import{DateUtil}frompura/harmony-utils;Button(日期比较).width(100%).onClick((){try{letd1newDate(2024,0,1);letd2newDate(2024,5,1);this.resultd1 d2:${DateUtil.isBefore(d1,d2)}\nd1 d2:${DateUtil.isAfter(d1,d2)};}catch(e){this.result异常: e;}})2.3 今天判断Button(今天判断).width(100%).onClick((){try{lettodaynewDate();letisTodayDateUtil.isToday(today);letisWeekendDateUtil.isWeekend(today);this.result是否今天:${isToday}\n是否周末:${isWeekend};}catch(e){this.result异常: e;}}) ## 三、完整页面示例typescriptimport{DateUtil}frompura/harmony-utils;EntryComponentstruct DateCompareDemo{Stateresult:string;build(){Column({space:12}){Button(日期比较).width(100%).onClick((){letd1newDate(2024,0,1);letd2newDate();this.resultd1在d2前:${DateUtil.isBefore(d1,d2)};});Button(今日判断).width(100%).onClick((){this.result今天:${DateUtil.isToday(newDate())}\n周末:${DateUtil.isWeekend(newDate())};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 有效期检查import{DateUtil,ToastUtil}frompura/harmony-utils;functioncheckExpiry(expiryDate:Date):boolean{if(DateUtil.isBefore(expiryDate,newDate())){ToastUtil.show(已过期);returnfalse;}returntrue;}4.2 工作日判断functiongetWorkdayLabel(date:Date):string{returnDateUtil.isWorkday(date)?工作日:休息日;}五、注意事项时间部分isSameDay只比较日期忽略时间部分时区影响比较基于本地时区周末定义isWeekend通常指周六和周日初始化依赖使用前需确保AppUtil.init()已调用节假日isWorkday不包含法定节假日判断六、常见问题Q1: isSameDay忽略时间部分吗是的isSameDay只比较年月日忽略时分秒。Q2: isWeekend包含周五吗不包含isWeekend通常只判断周六和周日。Q3: isWorkday考虑法定节假日吗不考虑isWorkday仅判断周一到周五法定节假日需额外处理。Q4: isBefore对相同日期返回什么返回false因为相同日期既不在之前也不在之后。总结DateUtil的日期比较和判断方法为日期逻辑提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法实现有效期检查、工作日判断等功能。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。