【HarmonyOS】时间处理Dayjs

简介: 在项目中经常会使用要时间的格式转换,比如数据库返回一个Date数据,你需要转成2024-10-2的格式,鸿蒙的原生SDK中是没有办法实现的,因此,在这里介绍第三方封装好并且成熟使用的库Dayjs。

背景


在项目中经常会使用要时间的格式转换,比如数据库返回一个Date数据,你需要转成2024-10-2的格式,鸿蒙的原生SDK中是没有办法实现的,因此,在这里介绍第三方封装好并且成熟使用的库Dayjs。

安装


切换到Entry文件夹下安装dayjs库。

cd .\entry\
ohpm install dayjs

查看oh-package.json5 文件,可以查看是否安装成功

dayjs使用


格式化

  • 基本格式化使用
let time: Date = new Date();
this.message = dayjs(time).format();

默认是 ISO8601 格式的字符串:输出 'YYYY-MM-DDTHH:mm:ssZ' 格式

  • 自定义格式化使用

可以在使用占位符加自定义的字眼来实现自己要的特定效果

let time: Date = new Date();
          this.message = dayjs(time).format("YYYY年MM月DD日");

  • 占位符格式化
  • 'YYYY' 表示四位数的年份。
  • 'YY'   表示两位数的年份。
  • 'M'    表示从1到12。
  • 'MM'   表示两位数的月份。
  • 'MMM'  表示月份缩写。
  • 'D' 表示月份中的天数
  • 'DD'   表示两位数的日。
  • 'd' 一周中的天数,星期天为0,星期一为1
  • 'HH'   表示两位数的小时(24小时制)。
  • 'hh' 表示12小时制的两位小时数
  • 'mm'   表示两位数的分钟。
  • 'ss'   表示两位数的秒。

支持以上的占位符

let time: Date = new Date();
          this.message = dayjs(time).format("YYYY-MM-DD");

如果需要格式化YY的字符时,可以使用 [YY] 中括号包括。

时间操作

  • 添加时间

使用add方法,传入数值和时间单位,可以实现时间的增加

Button("点击增加时间")
        .width("80%")
        .margin({ top: 20 })
        .onClick(() => {
          this.OneDay = dayjs(this.OneDay).add(1, "day").toDate();
          this.message = dayjs(this.OneDay).format("YYYY-MM-DD");
        })
  • 减少时间

使用subtract方法,传入数值和时间单位,可以实现时间的减少,再通过todate方法来实现date的更新。

Button("点击减少时间")
        .width("80%")
        .margin({ top: 20 })
        .onClick(() => {
          this.OneDay = dayjs(this.OneDay).subtract(1, "day").toDate();
          this.message = dayjs(this.OneDay).format("YYYY-MM-DD");
        })
  • 时间单位
  • 年(‘year’)
  • 月(‘month’)
  • 周(‘week’)
  • 天(‘day’)
  • 小时(‘hour’)
  • 分钟(‘minute’)
  • 秒(‘second’)
  • 时间比较

使用IsBefore方法可以判断day.js对象是否在另一个提供的日期时间之前。(毫秒级别)

使用IsSame方法可以判断day.js对象是否和另一个提供的时间相同。(毫秒级别)

使用IsAfter方法可以判断day.js对象是否在另一个提供的时间之后。(毫秒级别)

上面三种提供时间查询的方法可以将时间单位作为第二个参数传入,可以实现除毫秒以外的单位进行比较。例如,增加了一天,然后查询两个时间年份是否相同,返回结果是true,如果不加单位则为false。

Button("点击测试时间相同")
        .width("80%")
        .margin({ top: 20 })
        .onClick(() => {
          let temp = dayjs(this.OneDay).subtract(1, "day");
          this.message = `${dayjs(this.OneDay).isSame(temp, 'year')}`;
        })

插件使用


  • AdvancedFormat: 提供更多格式化选项,如季度、Unix 时间戳等。
  • RelativeTime: 用于显示时间的相对表示,如“2小时前”。
  • IsBefore, IsAfter: 用于比较日期。
  • Locale: 支持本地化,允许 Day.js 以用户所在地的语言显示日期。
  • Duration: 用于创建和操作时间段。
  • Timezone: 支持时区转换功能。
  • WeekOfYear, IsoWeek: 用于处理周数的插件,与国际标准或本地习惯相匹配。
  • MinMax: 用于获取一组日期中的最小或最大日期。
  • ToObject, ToArray: 分别将 Day.js 对象转换为 JSON 对象或数组。
  • IsToday:可以判断当前day.js对象是不是今天
相关文章
|
1天前
|
人工智能 JavaScript 安全
一文彻底搞清楚HarmonyOS NEXT中的this
程序员Feri是一位拥有12年+经验的开发者,擅长Java、嵌入式、鸿蒙、人工智能等领域。本文深入探讨了ArkTS中this关键字的重要性及其核心规则。通过分析组件方法、异步回调、@Builder上下文隔离和装饰器方法中的this指向,揭示其运行机制与常见陷阱。同时提供了高阶技巧如内存管理、函数式组件优化及性能对比,并总结调试指南与最佳实践,助你构建高性能HarmonyOS NEXT应用。
51 8
|
8天前
|
存储 开发者
HarmonyOS NEXT 实战系列07-应用状态
AppStorage 是应用全局的 UI 状态存储,支持跨 Ability 数据共享,提供 `setOrCreate` 和 `get` 方法管理全局状态,并通过 `@StorageProp` 和 `@StorageLink` 实现单向或双向数据同步至组件。PersistentStorage 基于 AppStorage,提供状态变量的持久化能力,可将选定属性保存到设备磁盘,但写操作同步执行,建议持久化数据小于 2KB,以避免影响 UI 渲染性能。相关持久化文件位于 `/data/app/el2/.../persistent_storage` 目录下。
|
3月前
【HarmonyOS Next开发】:ListItemGroup使用
通过使用ListItemGroup和AlphabetIndexer两种类型组件,实现带标题分类和右侧导航栏的页面
150 61
【HarmonyOS Next开发】:ListItemGroup使用
|
4月前
|
监控 开发者 UED
鸿蒙5.0版开发:订阅卡死事件(ArkTS)
在HarmonyOS 5.0中,开发者可以通过ArkTS订阅应用的卡死事件,以便在应用卡死时进行处理。本文详细介绍如何在ArkTS中订阅卡死事件,并提供示例代码。通过导入hiAppEvent和hilog模块,设置自定义参数,添加事件观察者,开发者可以监控应用稳定性并在问题发生时快速定位原因。示例代码展示了如何创建按钮订阅卡死事件,并在事件发生时通过回调函数处理和记录日志。
104 5
|
4月前
|
监控 UED 开发者
鸿蒙next版开发:订阅应用事件(ArkTS)
在HarmonyOS 5.0中,ArkTS引入了强大的应用事件订阅机制,允许开发者订阅和处理系统或应用级别的事件,这对于监控应用行为、优化用户体验和进行性能分析至关重要。本文详细介绍了如何在ArkTS中订阅应用事件,并提供了示例代码,包括导入模块、创建观察者、设置事件参数等步骤。通过这些方法,开发者可以更智能地管理和响应应用事件。
184 11
|
4月前
|
监控 API 开发者
鸿蒙next版开发:使用HiTraceChain打点(ArkTS)
在HarmonyOS 5.0中,HiTraceChain是一个性能监控工具,帮助开发者跟踪和分析应用性能问题。通过在代码中打点,记录函数调用时间和顺序,识别性能瓶颈。本文介绍如何在ArkTS中使用HiTraceChain进行打点,并提供示例代码。
64 4
|
7月前
|
存储 JavaScript 前端开发
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
在 “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(<https://coding.imooc.com/class/843.html>)视频课程中,因为讲师在该课程授课时是使用的HarmonyOS 3.1/4.0应用(API 9),如果部分学员采用了最新的HarmonyOS NEXT API,此时就会遇到API兼容性的问题。
300 0
HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点
|
10月前
|
安全 IDE 开发工具
HarmonyOS的功能及场景应用
一、基本介绍 鸿蒙HarmonyOS主要应用的设备包括智慧屏、平板、手表、智能音箱、IoT设备等。具体来说,鸿蒙系统是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,通过同一套系统能力、适配多种终端形态。 二、应用HarmonyOS的设备 1、智能手机: HarmonyOS用于华为的智能手机,旨在提供更流畅的用户体验和更好的多设备协同功能。 2、平板电脑: 华为的平板电脑也可以运行HarmonyOS,使用户可以在不同设备之间共享应用和数据。 3、智能电视: HarmonyOS用于智能电视,提供智能家
420 0
|
存储 安全 数据安全/隐私保护
HarmonyOS 高级特性
本章将探讨 HarmonyOS 的高级特性,包括分布式能力、安全机制和性能优化。这些特性可以帮助你构建更强大、更安全、更高效的应用。
258 0
HarmonyOS学习路之开发篇——公共事件与通知(一)
HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力,通过ANS(Advanced Notification Service,即通知增强服务)系统服务来为应用程序提供发布通知的能力。