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

【HarmonyOS】时间处理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对象是不是今天

相关文章:

【HarmonyOS】时间处理Dayjs

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

论React Native 和 UniApp 的区别

1. 开发语言与框架 React Native: 使用 JavaScript 和 React 框架进行开发。采用了 React 的组件化开发模式,适合熟悉 React 生态的开发者。使用 JavaScript 编写的代码会通过 React Native 框架桥接到原生代码(如 iOS 的 Swift 或 Android 的 Java/Kotl…...

微信小程序处理交易投诉管理,支持多小程序

大家好,我是小悟 1、问题背景 玩过微信小程序生态的,或许就有这种感受,如果收到投诉单,不会及时通知到手机端,而是每天早上10:00向小程序的管理员及运营者推送通知。通知内容为截至前一天24时该小程序账号内待处理的交…...

Pikachu-xss防范措施 - href输出 js输出

总体原则: 输入做过滤,输出做转义 过滤:根据业务需要进行过滤,如:输入点要求输入手机号,则只允许输入手机号格式的数字; 转义:所有输出到前端的数据,都根据输出点进行转…...

数据结构双向链表和循环链表

目录 一、循环链表二、双向链表三、循环双向链表 一、循环链表 循环链表就是首尾相接的的链表,就是尾节点的指针域指向头节点使整个链表形成一个循环,这就弥补了以前单链表无法在后面某个节点找到前面的节点,可以从任意一个节点找到目标节点…...

go基础面试题汇总第一弹

init函数是什么时候执行的? init的函数的作用是什么? 通常作为程序执行前包的初始化,例如mysql redis 等中间件的初始化 init函数的执行顺序是怎样的? 分不同情况来回答: 在同一个go文件里面如果有多个init方法,它们…...

Redis 实现分布式锁时需要考虑的问题

引言 分布式系统中的多个节点经常需要对共享资源进行并发访问,若没有有效的协调机制,可能会导致数据竞争、资源冲突等问题。分布式锁应运而生,它是一种保证在分布式环境中多个节点可以安全地访问共享资源的机制。而在Redis中,使用…...

百年极限论一直存在百年糊涂话:有正数小于所有正数

百年极限论一直存在百年糊涂话:有正数小于所有(任何、任意)正数。 “对于每个大于0的ε[ε>0],都有非0距离数小于ε”显然是病句:有正数小于每个(所有)正数ε。其中任意(任何&am…...

红日靶场1学习笔记

一、准备工作 1、靶场搭建 靶场地址 靶场描述 靶场拓扑图 其他相关靶场搭建详情见靶场地址相关说明 2、靶场相关主机信息 后续打靶场的过程中,如果不是短时间内完成,可能ip会有变化 主机ip密码角色win7192.168.122.131hongrisec2019!边界服务器win…...

【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)

文章目录 从零实现 list 容器:细粒度剖析与代码实现前言1. list 的核心数据结构1.1节点结构分析: 2. 迭代器设计与实现2.1 为什么 list 需要迭代器?2.2 实现一个简单的迭代器2.2.1 迭代器代码实现:2.2.2 解释: 2.3 测试…...

【C#生态园】打造现代化跨平台应用:深度解析.NET桌面应用工具

选择最适合你的.NET UI框架:全面解析六种热门选择 前言 在现代软件开发中,选择合适的桌面应用框架和UI库对于开发人员来说至关重要。本文将介绍几种流行的.NET桌面应用框架和UI库,包括Eto.Forms、Avalonia、ReactiveUI、MahApps.Metro、Mat…...

第二十一章 (动态内存管理)

1. 为什么要有动态内存分配 2. malloc和free 3. calloc和realloc 4. 常⻅的动态内存的错误 5. 动态内存经典笔试题分析 6. 总结C/C中程序内存区域划分 1.为什么要有动态内存管理 我们目前已经掌握的内存开辟方式有 int main() {int num 0; //开辟4个字节int arr[10] …...

机器学习框架总结

机器学习框架是用于构建、训练、评估和部署机器学习模型的工具和库的集合。它们简化了模型开发过程,并提供了预构建的功能、优化的计算性能和对深度学习、监督学习、无监督学习等技术的支持。下面是一些主要的机器学习框架的详细介绍: 1. TensorFlow 1…...

docker pull 超时的问题如何解决

docker不能使用&#xff0c;使用之前的阿里云镜像失败。。。 搜了各种解决方法&#xff0c;感谢B站UP主 <iframe src"//player.bilibili.com/player.html?isOutsidetrue&aid113173361331402&bvidBV1KstBeEEQR&cid25942297878&p1" scrolling"…...

【数学分析笔记】第4章第3节 导数四则运算和反函数求导法则(2)

4. 微分 4.3 导数四则运算与反函数求导法则 双曲正弦函数 sh ⁡ x e x − e − x 2 \sh x\frac{e^x-e^{-x}}{2} shx2ex−e−x​ 双曲余弦函数 ch ⁡ x e x e − x 2 \ch x\frac{e^xe^{-x}}{2} chx2exe−x​ ch ⁡ 2 x − sh ⁡ 2 x 1 \ch^2 x-\sh^2 x1 ch2x−sh2x1 ( e…...

【2024】基于mysqldump的数据备份与恢复

基于mysqldump备份与恢复 mysqldump是一个用于备份 MySQL 数据库的实用工具。 它可以将数据库的结构&#xff08;如数据库、表、视图、存储过程等的定义&#xff09;和数据&#xff08;表中的记录&#xff09;导出为文本文件&#xff0c;这些文本文件可以包含 SQL 语句&#…...

家用无线路由器配置

一.首先进行线路连接。如下图&#xff1a;"光猫LAN口"—网线—"路由器WAN口"。 注意&#xff1a;家用光纤宽带一般选择使用200兆宽带到1000兆&#xff0c;如果网速不达标请查看路由器是否是千兆路由器。千兆路由器通常是双频的&#xff0c;支持两个信号一个…...

模拟算法(4)_外观数列

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 模拟算法(4)_外观数列 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题目链…...

vsomeip用到的socket

概述&#xff1a; ​ vsomeip用到的socket的代码全部都在implementation\endpoints目录下面&#xff0c;主要分布在下面六个endpoint类中&#xff1a; local_client_endpoint_impl // 本地客户端socket&#xff08;UDS Socket或者127.0.0.1的socket&#xff09;local_server…...

MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

深耕AI&#xff1a;互联网行业 算法研发工程师 ​ 目录 MFC ActiveX 控件 控件的类型 标准控件 自定义控件 ActiveX控件 MFC ActiveX控件 标准/自定义控件 MFC ActiveX控件分类 3种MFC如何选择&#xff1f; MFC ActiveX控件 MFC 应用程序 MFC DLL 总结 举例说明…...

从Markdown到可执行规范:Tessl Framework初探与“规范即源代码”的实践思考

从Markdown到可执行规范&#xff1a;Tessl Framework初探与“规范即源代码”的实践思考 当代码行数不再是衡量开发效率的唯一标准&#xff0c;一种全新的编程范式正在悄然兴起。想象一下&#xff0c;开发者不再需要直接编写实现细节&#xff0c;而是专注于用结构化的自然语言描…...

Bambu Studio 3D打印切片实战指南:从技术原理到场景应用

Bambu Studio 3D打印切片实战指南&#xff1a;从技术原理到场景应用 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio作为一款专为3D打印优化的开源切片软件&…...

51单片学习ing

现在能够实现LED闪烁了&#xff01;&#xff01; 开心 今天学习了让LED闪烁以及LED流水灯&#xff0c;主要是了解了软件延时计算器这个工具 现在可以更灵活的变换LED的变换速度了&#xff0c;如下&#xff1a; 接下来学习到了c语言里模块化的思想&#xff0c;之前学习c的时候…...

Winhance中文版:图形界面驱动的Windows系统优化解决方案

Winhance中文版&#xff1a;图形界面驱动的Windows系统优化解决方案 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-…...

微信公众号模板消息推送实战:从配置到代码实现(PHP版)

微信公众号模板消息推送实战&#xff1a;PHP开发全流程指南 在移动互联网时代&#xff0c;微信公众号已成为企业与用户沟通的重要桥梁。模板消息作为微信生态中的关键功能&#xff0c;能够实现精准、高效的信息触达。本文将带领PHP开发者从零开始&#xff0c;完整掌握模板消息推…...

Stillcolor:彻底解决macOS时间抖动,为Apple Silicon用户带来无闪烁视觉体验

Stillcolor&#xff1a;彻底解决macOS时间抖动&#xff0c;为Apple Silicon用户带来无闪烁视觉体验 【免费下载链接】Stillcolor Disable temporal dithering on your Mac with this lightweight menu bar app. Designed for Apple silicon Macs. 项目地址: https://gitcode.…...

煤矿智能化验收必备:针对睡岗、离岗识别的AI视觉解决方案

在煤矿智能化建设中&#xff0c;确保井下作业人员的安全与规范操作是重中之重。睡岗、离岗等违规行为不仅影响生产效率&#xff0c;更可能引发严重的安全事故。因此&#xff0c;在煤矿智能化验收环节&#xff0c;一套高效精准的针对睡岗、离岗识别的AI视觉解决方案不可或缺。一…...

Pixel Aurora Engine 辅助UI/UX设计:自动生成界面原型与素材

Pixel Aurora Engine 辅助UI/UX设计&#xff1a;自动生成界面原型与素材 1. 设计效率的革命性提升 想象一下这样的场景&#xff1a;产品经理刚描述完"我们需要一个社交App的登录页&#xff0c;要简洁现代感&#xff0c;带点科技风"&#xff0c;几分钟后&#xff0c…...

嵌入式开发调试宏与性能优化实战

1. 嵌入式开发调试宏的妙用在嵌入式开发中&#xff0c;调试是最耗时耗力的环节之一。每次修改代码后都需要重新烧录、运行、观察结果&#xff0c;这个过程往往要重复数十次。而合理使用编译器提供的调试宏&#xff0c;可以大幅提升调试效率。1.1 基础调试宏解析GCC编译器提供了…...

如何高效使用Zettlr:开源写作工具的实用配置与技巧指南

如何高效使用Zettlr&#xff1a;开源写作工具的实用配置与技巧指南 【免费下载链接】Zettlr Your One-Stop Publication Workbench 项目地址: https://gitcode.com/GitHub_Trending/ze/Zettlr 还在为学术写作和知识管理寻找一个功能全面、界面简洁的跨平台工具吗&#x…...