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

Day.js基本使用

在 Vue3 项目开发中时间处理是绕不开的高频需求——比如格式化接口返回的时间戳、计算两个日期的差值、转换时区、展示相对时间如“3分钟前”。提到时间处理很多开发者会先想到 Moment.js但它体积偏大约200KB在追求轻量的 Vue3 项目中显得有些“笨重”。而Day.js作为 Moment.js 的轻量替代方案体积仅10KB左右压缩后API 与 Moment.js 高度兼容无需额外学习成本完美适配 Vue3 的开发场景。今天就带大家从零开始掌握 Day.js 在 Vue3 中的核心用法轻松搞定所有时间格式化需求新手也能快速上手官方文档 https://day.js.org/一、先搞懂为什么 Vue3 首选 Day.js在 Vue3 项目中选择 Day.js 而非其他时间工具核心优势有3点精准命中前端开发痛点轻量高效核心体积仅10KB远小于 Moment.js200KB不会增加项目打包体积尤其适合移动端和轻量项目API 友好完全兼容 Moment.js 的 API如果你用过 Moment.js几乎可以无缝切换无需重新记忆语法适配 Vue3支持 ES6 模块化导入可配合 Composition APIsetup 语法使用也能全局注册用法灵活且支持 TypeScript类型提示更友好。简单说Day.js 轻量版 Moment.js功能不减性能更优是 Vue3 时间处理的最优解之一。二、Vue3 中 Day.js 快速上手3步搞定下面我们从安装、全局注册、基础使用三个步骤快速搭建 Day.js 的开发环境全程复制代码即可使用。第一步安装 Day.js通过 npm 或 yarn 安装这是最常用的方式在项目根目录执行命令安装完成后即可在 Vue3 组件中按需导入使用也可以全局注册方便全项目调用。第二步全局注册推荐更高效在 Vue3 项目的入口文件main.js / main.ts中导入 Day.js 并挂载到 app 实例上实现全局可用无需在每个组件中重复导入。// main.jsVue3 JS import { createApp } from vue import App from ./App.vue import dayjs from dayjs // 导入 dayjs const app createApp(App) // 全局挂载 dayjs可通过 this.$dayjs选项式API或 app.config.globalProperties.$dayjs 访问 app.config.globalProperties.$dayjs dayjs app.mount(#app)如果是 Vue3 TypeScript 项目需要补充类型声明避免 TS 报错在 src 目录下创建 shims-vue.d.ts 文件添加如下代码// shims-vue.d.ts import type { App } from vue import dayjs from dayjs declare module vue/runtime-core { interface ComponentCustomProperties { $dayjs: typeof dayjs } }这样在 TS 组件中使用 this.$dayjs 时就能获得完整的类型提示了。第三步基础使用核心语法Day.js 的核心用法围绕「创建时间实例」和「格式化时间」展开下面结合 Vue3 的 Composition API 和选项式 API分别演示最常用的场景。1. 选项式 API 用法Vue2 迁移过来的同学首选template div !-- 格式化当前时间 -- p当前时间{{ formatCurrentTime }}/p !-- 格式化指定时间戳 -- p指定时间{{ formatTimestamp }}/p /div /template script export default { name: TimeFormat, computed: { formatCurrentTime() { // 格式化当前时间年-月-日 时:分:秒 return this.$dayjs().format(YYYY-MM-DD HH:mm:ss) }, formatTimestamp() { // 格式化指定时间戳13位毫秒级 const timestamp 1710000000000 return this.$dayjs(timestamp).format(YYYY年MM月DD日) } } } /script2. Composition API 用法Vue3 推荐写法在 setup 语法中无法直接使用 this因此需要两种方式要么局部导入 dayjs要么通过 getCurrentInstance 获取全局挂载的 dayjs。template div p当前时间{{ formatCurrentTime }}/p p相对时间{{ relativeTime }}/p /div /template script setup // 方式1局部导入推荐按需导入更符合 Composition API 理念 import dayjs from dayjs // 方式2获取全局挂载的 dayjs不推荐依赖全局配置 // import { getCurrentInstance } from vue // const { proxy } getCurrentInstance() // const dayjs proxy.$dayjs // 格式化当前时间 const formatCurrentTime dayjs().format(YYYY-MM-DD HH:mm:ss) // 相对时间如3分钟前、1天前 const relativeTime dayjs(2026-03-01).fromNow() // 假设当前时间是2026-03-05输出“4天前” /script三、Day.js 核心功能实战常用必掌握除了基础的时间格式化Day.js 还有很多实用功能覆盖开发中90%的时间处理场景下面重点讲解几个高频用法配合代码示例一看就会。1. 时间格式化最核心format() 方法是 Day.js 最常用的方法通过传入格式化字符串实现任意格式的时间展示常用占位符如下重点记这几个YYYY4位年份如2026MM2位月份如03、12DD2位日期如05、31HH24小时制如14、23mm2位分钟如08、59ss2位秒数如05、59实战示例// 1. 格式化当前时间 dayjs().format(YYYY-MM-DD HH:mm:ss) // 输出2026-03-05 14:30:00 dayjs().format(YYYY年MM月DD日 星期d) // 输出2026年03月05日 星期三星期d1周一7周日 // 2. 格式化指定时间支持字符串、时间戳、Date对象 dayjs(2026-03-05).format(MM/DD/YYYY) // 输出03/05/2026 dayjs(new Date()).format(HH:mm) // 输出14:30 dayjs(1710000000000).format(YYYY-MM-DD) // 输出2026-03-092. 相对时间高频场景fromNow() 方法可以快速展示“相对当前时间”的描述比如“刚刚”“3分钟前”“1个月前”非常适合展示评论时间、消息时间等场景无需手动计算差值。// 过去的时间 dayjs(2026-03-01).fromNow() // 输出4天前当前时间2026-03-05 dayjs(2026-03-05 14:00).fromNow() // 输出30分钟前当前时间14:30 // 未来的时间 dayjs(2026-03-10).fromNow() // 输出5天后注意fromNow() 默认不带“前/后”如果需要更精准的描述可以传入 true 参数dayjs(2026-03-01).fromNow(true) → 输出“4天”。3. 日期计算加减、差值开发中经常需要计算“n天后”“n小时前”的时间或者两个日期的差值Day.js 提供了 add()、subtract()、diff() 三个方法用法简单。// 1. 日期加减add 加subtract 减 dayjs().add(1, day).format(YYYY-MM-DD) // 明天 dayjs().subtract(7, day).format(YYYY-MM-DD) // 7天前 dayjs().add(3, hour).format(HH:mm) // 3小时后 dayjs().subtract(30, minute).format(HH:mm) // 30分钟前 // 2. 两个日期的差值diff() const start dayjs(2026-03-01) const end dayjs(2026-03-05) end.diff(start, day) // 输出4相差4天 end.diff(start, hour) // 输出96相差96小时4. 时间戳与日期转换接口返回的时间通常是时间戳13位毫秒级或10位秒级Day.js 可以快速实现时间戳与日期字符串的转换。// 1. 日期转时间戳毫秒级 dayjs(2026-03-05).valueOf() // 输出1710000000000示例值 dayjs().valueOf() // 当前时间的毫秒级时间戳 // 2. 时间戳转日期支持13位和10位 dayjs(1710000000000).format(YYYY-MM-DD) // 13位正常转换 dayjs(1710000000).format(YYYY-MM-DD) // 10位自动补全为毫秒级四、Vue3 中 Day.js 进阶技巧避坑优化掌握基础用法后这些进阶技巧能帮你避免踩坑提升开发效率尤其适合中大型项目。1. 全局配置默认格式化如果项目中大部分时间格式都是统一的比如“YYYY-MM-DD HH:mm:ss”可以全局配置默认格式无需每次都写 format() 的参数。// main.js 中全局配置 import dayjs from dayjs // 设置默认格式化格式 dayjs.defaultFormat YYYY-MM-DD HH:mm:ss // 之后使用时直接调用 format() 即可 dayjs().format() // 输出2026-03-05 14:30:002. 处理时区问题可选如果项目涉及多时区如海外项目Day.js 本身默认使用本地时区需要安装 timezone 插件来处理时区转换。//安装时区插件 npm install dayjs-plugin-timezone --save// 导入并使用插件 import dayjs from dayjs import timezone from dayjs-plugin-timezone dayjs.extend(timezone) // 转换为 UTC 时区 dayjs().tz(UTC).format() // 输出 UTC 时间 // 转换为纽约时区 dayjs().tz(America/New_York).format()3. 避坑指南新手必看时间戳必须是13位毫秒级如果接口返回10位秒级时间戳需先乘以1000否则会解析错误dayjs(1710000000 * 1000).format()避免直接修改 Day.js 实例Day.js 是 immutable 的每次调用 add()、subtract() 等方法都会返回一个新的实例不会修改原实例局部导入优于全局注册如果项目中只有少数组件需要用到 Day.js建议局部导入减少全局依赖提升项目性能。

相关文章:

Day.js基本使用

在 Vue3 项目开发中,时间处理是绕不开的高频需求——比如格式化接口返回的时间戳、计算两个日期的差值、转换时区、展示相对时间(如“3分钟前”)。提到时间处理,很多开发者会先想到 Moment.js,但它体积偏大&#xff08…...

在AspNetCore中理解依赖注入生命周期冲突与解决方案

本文详细讲解AspNetCore依赖注入生命周期冲突问题,通过BackgroundService后台托管服务示例,分析Singleton、Scoped、Transient三种生命周期的区别及注入规则,重点说明为什么Singleton不能直接依赖Scoped服务,以及如何使用IService…...

智炬星图:如何在AI服务商洪流中,做出最明智的专业选择?

在人工智能浪潮席卷全球的今天,从企业智能化转型到个人效率工具,AI大模型已成为驱动创新的核心引擎。然而,面对市场上林林总总的AI公司,决策者们常常陷入选择困境:是追求概念新颖的初创团队,还是青睐底蕴深…...

我用 OpenClaw + 飞书多维表格,搭了一套自媒体内容工厂

引言 做自媒体三年,我最大的感受是:内容生产永远是瓶颈。选题、资料收集、撰写、排版、多平台分发,每一步都耗时耗力。尤其是当你想做内容矩阵,同时运营多个账号时,人力成本会呈指数级增长。 直到我接触到 OpenClaw 和…...

GEO被315爆了!净与染的博弈 —— 论大模型的语料污染与治理‌

目录引言‌一、GEO:定义与危害‌二、治理挑战:信息残留与隐蔽攻击‌1、技术革新,源头防治2、法律与监管,划定红线3、行业自律,共筑堤坝结论‌引言‌ 昨晚的大会直接爆出了GEO对大模型的“投毒”,说明AI大环…...

小孩沉迷OPPO手机难管?这招让家长拿捏管控,轻松松松不费神!

自从给孩子配了一台OPPO手机,他越用越上瘾,晚上关灯睡觉后还悄悄蜷缩在被窝里玩手机,光线昏暗,屏幕光刺眼,近期感觉孩子的眼睛视力都下降了,这么下去也不是办法,怎样控制小孩玩手机的时间&#…...

674. 最长连续递增序列-day48打卡-代码随想录

674. 最长连续递增序列 思路 本题相对于昨天的动态规划:300.最长递增子序列最大的区别在于“连续”。 本题要求的是最长连续递增序列 动态规划 动规五部曲分析如下: 确定dp数组(dp table)以及下标的含义 dp[i]:以下…...

基于改进粒子群算法的微电网多目标优化调度探索

【基于改进粒子群算法的微电网多目标优化调度】基于改进粒子群算法的微电网多目标优化调度 %一种综合考虑微电网系统运行成本和环境保护成本的并网模式下微电网多目标优化调度模型 同时采用改进的粒子群算法对优化模型进行求解在如今追求可持续能源发展的大背景下,微…...

登录微信可以但无法访问浏览器

登录微信可以但无法访问浏览器,这通常是由于DNS解析问题导致的,这是最常见的原因。微信等即时通讯应用可能使用内置IP地址或备用连接通道,而浏览器完全依赖系统的DNS服务来解析域名。当DNS配置错误、缓存污染或服务器不稳定时,就会…...

三大 AI 芯片架构

AI(尤其是深度学习)最核心的工作,就是海量、重复的数学计算(矩阵乘法、向量运算)。训练 ChatGPT:要算几十亿、上万亿次数学题。自动驾驶:每秒要算上千次环境识别。普通 CPU(电脑 / 手…...

智能传感器:从概念解析到设计实践与未来展望

在上一篇文章中,我们探讨了数字孪生技术如何为工业制造带来革命性变革。作为数字孪生系统的“感官神经”,智能传感器是实现虚实映射、数据采集的关键基石。今天,武汉利又德的小编将继续深入,带您全面了解智能传感器的内涵、核心特…...

晶振作用 → 频率怎么来 → PLL 倍频 → 分频 → MCU 主频

一、晶振电路的核心作用:给 MCU 一个「精准的原始心跳」MCU 是数字同步电路,所有动作:执行指令、读写 Flash、ADC 采样、串口通信、定时器计时……全部必须按统一时钟节拍来干。1. 晶振本身干什么?晶振是石英晶体谐振器&#xff0…...

晶振电路的工作原理是什么?新手必懂!

一、先搞懂:晶振本身是什么? 晶振的核心是一片石英晶体,它靠一个物理效应工作: 压电效应(晶振的本质) 给石英晶体加电压 → 晶体发生微小机械形变让石英晶体受外力振动 → 会产生电压 石英有个超级关键…...

专业的负氧离子座舱公司

在追求高品质生活的今天,健康出行已成为人们关注的焦点。[吉品森氧]作为专业的负氧离子座舱公司,正引领着这一领域的革新潮流。负氧离子,被誉为“空气维生素”,具有净化空气、促进新陈代谢、增强免疫力等多重功效。[吉品森氧]深谙…...

模块化仪器接口技术纵览:PXIe、VXI、LXI、VPX

引言 现代测试测量系统正朝着模块化、可重构、高速化的方向快速发展。模块化仪器,作为一种将仪器功能封装在标准尺寸模块中,并通过标准总线接口集成到机箱或背板上的解决方案,因其灵活性、可扩展性和易于维护的特性,在研发、生产和自动化测试领域扮演着至关重要的角色。其…...

PANASONIC松下 AXE530127 SMD 板对板与背板连接器

特性 1.“坚固接触”结构提供对各种环境的高抗性。 2.简单的锁结构提供触觉反馈,确保良好的插拔操作手感。 3.提供用于检查的连接器。...

第7章:Docker network网络管理(网络模式和创建docker网络)

第7章:Docker network网络管理(网络模式和创建docker网络) 7.2、Docker网络模式 Docker 服务安装完成之后,默认在每个宿主机会生成一个名称为 docker0 的网卡其 IP 地址都是 172.17.0.1/16。 每次新建一个容器后,宿主机就会多了个虚拟网卡,与容器的网卡组合成一个网卡,例…...

扔掉提示词,开始养“龙虾”:2026 AI自动化执行新逻辑

01. 2026的十字路口:为什么单模型走不下去了? 如果你还在纠结于提示词怎么写才能让GPT-4o一次性生成完美代码,你可能已经落后于这个时代了。 2026年被行业普遍视为“AI元年”,但这个元年并非因为某个模型突破了万亿参数&#xf…...

open claw安装后启动运行web UI界面 - wsl版

以管理员身份打开 PowerShell 查看wsl中安装的发行版 wsl --list --verbose进入打wsl中指定的发行版 wsl -d Ubuntu查看 Gateway 状态 openclaw gateway status启动服务(通过 systemd/launchd) openclaw gateway start查看基础的网页端 openclaw gateway…...

好用的广东出书服务

大家好,我是你们的老朋友小明。今天咱们聊聊一个特别的话题——出书。可能很多人觉得出书是一件很遥远的事情,但实际上,随着互联网的发展,越来越多的人开始尝试自己写书、出书。但是,如何选择一家靠谱的出书服务公司呢…...

中红外BIC 全介质超表面 光谱调制 FDTD仿真 作品介绍: 复现论文:2018年 Science

中红外BIC 全介质超表面 光谱调制 FDTD仿真 作品介绍: 复现论文:2018年 Science:Imaging-based molecular barcoding with pixelated dielectric metasurfaces 论文介绍:中红外 全介质 硅纳米柱超表面模型,双椭圆纳米柱…...

2026年,人生仓库集团发展如何?看其独特优势与市场表现

大家好,今天咱们聊聊人生仓库集团在未来几年的发展前景。人生仓库集团,这个名字听起来就充满了故事和温度。它不仅仅是一个企业,更像是一个为奋斗者储存价值和赋能成长的“仓库”。独特优势1. 强大的品牌背书系统人生仓库集团的GEO品牌背书系…...

国内OpenClaw玩家圈共识:智创聚合API才是真香选择

你是否也曾对OpenClaw(龙虾)的强大能力心动不已,却在部署第一步——配置AI大模型时望而却步?直接使用官方API,高昂的Token费用让人肉疼;尝试部署本地开源模型,繁琐的技术门槛又令人头疼。但在国…...

CnOpenData 中国历史地震表-发生时间1年内

地震是全球发生频率最高、影响最严重的自然灾害之一,是当今人类生存和发展所面临的一个重大全球性问题。地震灾害有以下突出特征:巨大的破坏性。地震会造成山体、地面及其附着物(如植被、建筑)等破坏,往往还伴随着海啸…...

【Iced】core库Size 结构体源码解析(size.rs)

这是 iced_core 中定义的 2D尺寸 类型&#xff0c;用于表示宽度和高度。 &#x1f3d7;️ 结构体定义 /// 2维空间中的尺寸大小 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] pub struct Size<T f32> {/// 宽度pub width: T,/// 高度pub height: T, }关…...

PMP自学笔记

...

【Matlab】MATLAB教程:多维数组索引(案例:A(1,2,3)、A(:,:,2),聚焦多维数据提取)

MATLAB教程:多维数组索引(案例:A(1,2,3)、A(:,:,2),聚焦多维数据提取) 在MATLAB科学计算、工程仿真、数据分析及数据可视化中,多维数组(三维及以上)是存储复杂关联数据的核心载体——无论是时间-空间-指标三维监测数据、多通道传感器数据,还是三维空间坐标数据,都需…...

视频去字幕工具横评:本地 AI、云端方案与传统方法的实战对比

> 做视频二创&#xff0c;最头疼的莫过于硬编码字幕。本文实测 5 种主流去字幕方案&#xff0c;从技术原理到实际效果&#xff0c;给你一份客观的选型指南。---## 一、为什么去字幕这么难&#xff1f;视频字幕分为两种&#xff1a;**软字幕**和**硬字幕**。- **软字幕**&…...

Infoseek:以智能舆情监测,为企业品牌筑牢安全防线

当前网络舆论场迭代速度快&#xff0c;一条负面评价、一次认知误解&#xff0c;均可能通过网络快速扩散&#xff0c;对企业品牌形象造成影响。传统舆情监测服务普遍存在成本偏高、操作门槛高的问题&#xff0c;导致多数中小企业陷入“事后补救”的被动局面。Infoseek舆情监测系…...

告别手动复制:C# + Spire.XLS 实现HTML转Excel的完整方案

告别手动复制&#xff1a;C# Spire.XLS 实现HTML转Excel的完整方案 在Web开发和数据处理中&#xff0c;C# HTML to Excel转换需求频现。网页表格数据手动复制到Excel常导致样式丢失、格式混乱&#xff0c;费时费力。随着Web爬取数据自动化趋势&#xff0c;高效实现HTML 到 XLS…...