当前位置: 首页 > news >正文

鸿蒙三方库 | harmony-utils之DateUtil日期比较与判断详解

前言

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

ohpminstall@pura/harmony-utils

2.2 日期比较

import{DateUtil}from'@pura/harmony-utils';Button('日期比较').width('100%').onClick(()=>{try{letd1=newDate(2024,0,1);letd2=newDate(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{lettoday=newDate();letisToday=DateUtil.isToday(today);letisWeekend=DateUtil.isWeekend(today);this.result=`是否今天:${isToday}\n是否周末:${isWeekend}`;}catch(e){this.result='异常: '+e;}})```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a6990fffa7bd4df899d2174827a4f00d.png#pic_center) ## 三、完整页面示例```typescriptimport{DateUtil}from'@pura/harmony-utils';@Entry@Componentstruct DateCompareDemo{@Stateresult:string='';build(){Column({space:12}){Button('日期比较').width('100%').onClick(()=>{letd1=newDate(2024,0,1);letd2=newDate();this.result=`d1在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}from'@pura/harmony-utils';functioncheckExpiry(expiryDate:Date):boolean{if(DateUtil.isBefore(expiryDate,newDate())){ToastUtil.show('已过期');returnfalse;}returntrue;}

4.2 工作日判断

functiongetWorkdayLabel(date:Date):string{returnDateUtil.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工具库,更多功能请参考官方文档与后续系列文章。

http://www.jsqmd.com/news/1279496/

相关文章:

  • 嵌入式系统看门狗(WDT)原理、配置与调试全解析
  • 昆泰芯微 KTH462N系列 2.5-5.5V/超低功耗2D锁存型霍尔传感器 SOT-23-6L 技术解析
  • 2026年华中建筑沙盘与会展展示代表性企业发展现状分析(附核心数据) - 优企甄选
  • MKS SKIPR船长板Klipper配置全攻略:从固件刷写到TMC2209调优
  • STARK数据集准备完全手册:LaSOT、GOT10K与TrackingNet配置指南
  • 虚幻引擎蓝图系统入门:从核心概念到实战应用全解析
  • Agent技术实战:沪语智能客服开发全流程解析
  • CentOS7.9离线部署K8S-002
  • STARK性能全面测评:LaSOT 67.1% AUC背后的核心技术揭秘
  • 防水SIM卡航空插头在恶劣环境下的可靠性设计与应用
  • 双馈风力发电机转子侧变流器矢量控制机理与功率传递本质研究
  • AngularEditor自定义按钮开发指南:构建专属编辑工具的终极方案
  • 特价机票怎么买最省心?不用熬夜抢,轻松拿下优惠机票 - 工具软件使用方法推荐
  • 归并排序C语言实现:从递归到迭代的算法详解与VSCode调试实战
  • 掌控板颜色识别与舵机控制:从传感器原理到智能交互项目实践
  • 2026安阳黄金回收实测:万金汇9店全城覆盖,附避坑指南 - 观金堂黄金回收
  • 基于Arduino的DIY MIDI控制器制作指南:从硬件搭建到软件映射
  • 如何在5分钟内集成SimpleKeychain:iOS开发者的终极入门教程
  • 贵州本土化教育课程解析:地域特色与考试热点的融合
  • CentOS7.9离线部署K8S-001
  • LabVIEW与Arduino串口通信实战:从零实现流水灯控制
  • 特价机票怎么抢才快?教你正确买打折机票,再也不用原价买 - 工具软件使用方法推荐
  • DBMS_SQL-Notes终极资源:GitHub仓库与PDF笔记深度解析
  • 9合1扩展板与Mind+用户库:软硬件封装如何降低Arduino创客入门门槛
  • SpringBoot+Vue构建少儿体适能赛事管理系统实践
  • 从摩尔斯电码到数字通信:Arduino声音发送装置制作全解析
  • COMSOL 6.2在激光增材制造仿真中的关键技术解析
  • OpenClaw云平台:AI开发与部署的三大突破
  • FAT文件是什么格式?怎么打开FAT、IMG等磁盘镜像文件
  • 广州房屋防水补漏瓷砖空鼓白蚁消杀公司靠谱推荐(2026年新) - 鲁顺