前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Day.js极简轻易快速2kB的JavaScript库-替代Moment.js

Day.js极简轻易快速2kB的JavaScript库-替代Moment.js

原创
作者头像
用户1349979
发布于 2025-05-01 14:16:24
发布于 2025-05-01 14:16:24
11600
代码可运行
举报
文章被收录于专栏:前端前端
运行总次数:0
代码可运行

Dayjs介绍

dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。 Day.js 的 API 与 Moment.js 高度相似,因此对于熟悉 Moment.js 的开发者来说,迁移到 Day.js 非常容易。

Dayjs文档

最早找到的一个算是中文的dayjs中文官网

https://dayjs.uihtm.com

使用场景

Day.js 适用于各种需要处理日期和时间的场景,例如:

  • 在 Web 应用中显示和格式化日期
  • 处理用户输入的日期
  • 计算倒计时或时间间隔
  • 在日历应用中管理事件日期
  • 数据可视化中处理时间序列数据

安装 Day.js

可以通过 npm 或 yarn 安装 Day.js:

代码语言:bash
AI代码解释
复制
安装 Day.js
可以通过 npmyarn 安装 Day.js:

或者

代码语言:bash
AI代码解释
复制
yarn add dayjs

你也可以通过 CDN 直接在 HTML 文件中引入 Day.js:

代码语言:html
AI代码解释
复制
<script src="https://unpkg.com/dayjs"></script>

如何使用 Day.js

基本用法

首先,引入 Day.js:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dayjs from 'dayjs';

然后,你可以使用 Day.js 来解析和格式化日期:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const now = dayjs();
console.log(now.format('YYYY-MM-DD')); // 输出当前日期,例如:2023-10-01

解析日期

Day.js 可以解析多种格式的日期:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const date = dayjs('2023-10-01');
console.log(date.format('MMMM D, YYYY')); // 输出:October 1, 2023

操作日期

你可以轻松地添加或减去时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const tomorrow = dayjs().add(1, 'day');
console.log(tomorrow.format('YYYY-MM-DD')); // 输出明天的日期

const lastWeek = dayjs().subtract(1, 'week');
console.log(lastWeek.format('YYYY-MM-DD')); // 输出一周前的日期

比较日期

Day.js 提供了多种方法来比较日期:

代码语言:bash
AI代码解释
复制
const date1 = dayjs('2023-10-01');
const date2 = dayjs('2023-10-02');

console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2, 'day')); // false

本地化支持

Day.js 支持多种语言的本地化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dayjs/locale/zh-cn'; // 引入中文本地化

dayjs.locale('zh-cn'); // 设置为中文
console.log(dayjs().format('MMMM D, YYYY')); // 输出:十月 1, 2023

在 Vue.js 中使用 Day.js

在 Vue.js 项目中,Day.js 可以很方便地用于处理日期和时间的格式化、计算和显示。以下是一些常见的用法示例。

1. 在 Vue 组件中直接使用 Day.js

首先,在 Vue 组件中引入 Day.js:

代码语言:js
AI代码解释
复制
<template>
  <div>
    <p>当前日期:{{ formattedDate }}</p>
    <p>一周后的日期:{{ nextWeekDate }}</p>
  </div>
</template>

<script>
import dayjs from 'dayjs';

export default {
  data() {
    return {
      currentDate: dayjs(), // 获取当前日期
    };
  },
  computed: {
    // 格式化当前日期
    formattedDate() {
      return this.currentDate.format('YYYY-MM-DD');
    },
    // 计算一周后的日期
    nextWeekDate() {
      return this.currentDate.add(1, 'week').format('YYYY-MM-DD');
    },
  },
};
</script>
2. 在 Vue 过滤器中使用 Day.js

Vue 2.x 支持过滤器(Filters),可以方便地格式化日期。虽然 Vue 3.x 移除了过滤器,但你仍然可以通过方法或计算属性实现类似功能。

Vue 2.x 中使用过滤器
代码语言:js
AI代码解释
复制
import Vue from 'vue';
import dayjs from 'dayjs';

// 定义全局过滤器
Vue.filter('formatDate', function(value, format = 'YYYY-MM-DD') {
  return dayjs(value).format(format);
});

在模板中使用过滤器:

代码语言:js
AI代码解释
复制
<template>
  <div>
    <p>当前日期:{{ currentDate | formatDate('YYYY年MM月DD日') }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentDate: dayjs(), // 获取当前日期
    };
  },
};
</script>
Vue 3.x 中使用方法

Vue 3.x 中可以通过方法实现日期格式化:

代码语言:js
AI代码解释
复制
<template>
  <div>
    <p>当前日期:{{ formatDate(currentDate, 'YYYY年MM月DD日') }}</p>
  </div>
</template>

<script>
import dayjs from 'dayjs';

export default {
  data() {
    return {
      currentDate: dayjs(), // 获取当前日期
    };
  },
  methods: {
    formatDate(date, format = 'YYYY-MM-DD') {
      return dayjs(date).format(format);
    },
  },
};
</script>
3. 在 Vuex 中使用 Day.js

如果你的 Vue 项目使用了 Vuex 进行状态管理,可以在 Vuex 的 getters 或 actions 中使用 Day.js 处理日期。

示例:在 Vuex 中格式化日期
代码语言:js
AI代码解释
复制
import Vue from 'vue';
import Vuex from 'vuex';
import dayjs from 'dayjs';

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    currentDate: dayjs(), // 存储当前日期
  },
  getters: {
    formattedDate: (state) => (format = 'YYYY-MM-DD') => {
      return dayjs(state.currentDate).format(format);
    },
  },
  actions: {
    updateDate({ commit }) {
      const newDate = dayjs().add(1, 'day'); // 计算明天的日期
      commit('SET_DATE', newDate);
    },
  },
  mutations: {
    SET_DATE(state, date) {
      state.currentDate = date;
    },
  },
});

export default store;

在组件中使用 Vuex 的日期:

代码语言:js
AI代码解释
复制
<template>
  <div>
    <p>当前日期:{{ formattedDate('YYYY年MM月DD日') }}</p>
    <button @click="updateDate">更新日期</button>
  </div>
</template>

<script>
import { mapGetters, mapActions } from 'vuex';

export default {
  computed: {
    ...mapGetters(['formattedDate']),
  },
  methods: {
    ...mapActions(['updateDate']),
  },
};
</script>
4. 在 Vue 中使用 Day.js 插件

Day.js 支持通过插件扩展功能。例如,使用 relativeTime 插件可以显示相对时间(如“2 天前”)。

安装和使用 relativeTime 插件
代码语言:js
AI代码解释
复制
npm install dayjs
npm install dayjs/plugin/relativeTime

在 Vue 项目中使用插件:

代码语言:js
AI代码解释
复制
<template>
  <div>
    <p>发布时间:{{ relativeTime(publishedDate) }}</p>
  </div>
</template>

<script>
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import 'dayjs/locale/zh-cn'; // 引入中文本地化

dayjs.extend(relativeTime);
dayjs.locale('zh-cn'); // 设置为中文

export default {
  data() {
    return {
      publishedDate: dayjs().subtract(2, 'day'), // 假设发布时间是 2 天前
    };
  },
  methods: {
    relativeTime(date) {
      return dayjs(date).fromNow(); // 输出:2 天前
    },
  },
};
</script>
在 React 中使用 Day.js

在 React 组件中,你可以使用 Day.js 来处理和显示日期:

代码语言:js
AI代码解释
复制
import React from 'react';
import dayjs from 'dayjs';

const DateComponent = ({ date }) => {
  const formattedDate = dayjs(date).format('MMMM D, YYYY');
  return <div>{formattedDate}</div>;
};

export default DateComponent;
在 Node.js 中使用 Day.js

在 Node.js 中,你可以使用 Day.js 来处理服务器端的日期和时间:

代码语言:js
AI代码解释
复制
const dayjs = require('dayjs');

const now = dayjs();
console.log(now.format('YYYY-MM-DD')); // 输出当前日期

总结一下🥳

Day.js 是一个轻量级且功能强大的日期处理库,适用于大多数常见的日期和时间操作。它的 API 与 Moment.js 高度相似,使得从 Moment.js 迁移到 Day.js 非常容易。尽管 Day.js 的功能相对较少,但其体积小、性能高,非常适合现代 Web开发!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Spring高手之路17——动态代理的艺术与实践
动态代理是一种强大的设计模式,它允许开发者在运行时创建代理对象,用于拦截对真实对象的方法调用。这种技术在实现面向切面编程(AOP)、事务管理、权限控制等功能时特别有用,因为它可以在不修改原有代码结构的前提下,为程序动态地注入额外的逻辑。
砖业洋__
2024/04/13
4610
Spring高手之路17——动态代理的艺术与实践
SSM框架中十分常用的设计模式:动态代理
👆点击“博文视点Broadview”,获取更多书讯 本文介绍的是SSM框架中十分常用的设计模式,所以开发者掌握它十分必要。 动态代理和责任链无论在Spring还是MyBatis中都有重要的应用,只要随着本书的例子多写代码,反复体验,就能掌握。在分析Spring AOP和MyBatis技术原理时,我们还会不断提及它们,它们适用范围广,值得读者认真研究。 代理模式的意义在于生成一个占位(又称代理对象),来代理真实对象(又称目标对象),从而控制真实对象的访问。 先来谈谈什么是代理模式。 假设这样一个场景,你的公
博文视点Broadview
2023/05/06
2220
SSM框架中十分常用的设计模式:动态代理
【小家Java】JDK动态代理技术,你真学会了吗?(Proxy、ProxyClassFactory)
动态代理技术,相信我们都并不陌生。特别是在Spring框架内,大量的使用到了反射以及动态代理技术。但是如果我们只是停留在平时的运用阶段,此篇文章你其实是可以跳过的,因为反射、代理技术一般都只有在框架设计中才会使用到,业务开发是不用接触的。
YourBatman
2019/09/03
4400
【小家Java】JDK动态代理技术,你真学会了吗?(Proxy、ProxyClassFactory)
深入解析:Cglib与JDK动态代理的实现原理、区别及性能对比
在Java开发中,动态代理是一种强大的技术,它允许在运行时创建代理对象以添加行为,而无需修改原始类的代码。JDK动态代理和Cglib是两种主要的动态代理实现方式。本文将深入探讨它们的实现原理、区别、劣势以及性能对比。
AI码师
2024/05/29
3.2K0
深入解析:Cglib与JDK动态代理的实现原理、区别及性能对比
jdk动态代理和cglib动态代理详解
如上图,代理模式可分为动态代理和静态代理,我们比较常用的有动态代理中的jdk动态代理和Cglib代理,像spring框架、hibernate框架中都采用了JDK动态代理,下面将结合代码阐述两种代理模式的使用与区别。
全栈程序员站长
2022/08/29
7200
jdk动态代理和cglib动态代理详解
Spring的两种动态代理Jdk与Cglib
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调InvokeHandler来处理。 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换
全栈程序员站长
2022/08/04
7430
Spring的两种动态代理Jdk与Cglib
JDK之动态代理(JDK与CGLIB)与静态代理
代理类在程序运行时创建的代理方式被称为动态代理 静态代理中,代理类是自己定义好的,在程序运行之前就已经编译完成。然而动态代理,代理类并不是在Java代码中定义的,而是运行时根据我们在Java代码中的指示动态生成的。相比较静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法,比如想要在每个代理方法前都加上一个处理方法,静态代理就需要在每个类内部加上这个方法
才疏学浅的木子
2022/11/28
2220
JDK之动态代理(JDK与CGLIB)与静态代理
AOP中的JDK动态代理与CGLIB动态代理:深度解析与实战
这里推荐一篇实用的文章:《Java 读取寄存器数据的实现与应用》,作者:【喵手】。
小马哥学JAVA
2024/11/21
2260
JDK动态代理
这里是最简单的Java接口和实现类的关系,此时可以开始动态代理了,一般会分为两个步骤:第一是建立代理对象和真实服务对象的代理和被代理关系,第二步是实现代理对象具体方法的逻辑。
itlemon
2020/04/03
5320
jdk动态代理和cglb动态代理
静态代理是在编译时就确定了代理类的代码,在程序运行前就已经存在了代理类的class文件。代理类与委托类的关系在编译时就已经确定,因此被称为静态代理。在静态代理中,代理类需要实现与委托类相同的接口或者继承委托类的父类,以便能够对委托类进行代理操作。
一个风轻云淡
2023/10/15
2310
jdk动态代理和cglb动态代理
JDK动态代理和CGLIB动态代理
Java动态代理是一种在运行时创建代理对象的技术,它允许开发者在不修改目标类代码的情况下,通过代理类对目标类的实例方法进行增强或拦截。动态代理的核心价值在于能够在程序运行阶段动态地生成一个实现了预定义接口的新类,这个新类就是所谓的“代理类”。
程序猿川子
2025/02/27
1750
JDK动态代理和CGLIB动态代理
Java代理相关:JDK动态代理、CGLIB动态代理
代理(Proxy)是一种设计模式,提供了对目标对象另外的一种访问方式。可以在目标对象实现的基础上,增加额外的功能操作,即扩展目标对象的功能。
lpe234
2020/07/27
4320
【面试系列】JDK动态代理和CGLIB静态代理 - Java技术债务
是否在面试过程中经常被问到Spring的代理的问题:比如说几种代理方式?两种代理方式的区别?或者问为什么JDK动态代理只能代理接口?
Java技术债务
2024/06/21
1220
【面试系列】JDK动态代理和CGLIB静态代理 - Java技术债务
Java 动态代理详解
动态代理在Java中有着广泛的应用,比如Spring AOP、Hibernate数据查询、测试框架的后端mock、RPC远程调用、Java注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。
小旋锋
2019/01/21
1.1K0
Java两种动态代理JDK动态代理和CGLIB动态代理[通俗易懂]
代理模式是23种设计模式的一种,他是指一个对象A通过持有另一个对象B,可以具有B同样的行为的模式。为了对外开放协议,B往往实现了一个接口,A也会去实现接口。但是B是“真正”实现类,A则比较“虚”,他借用了B的方法去实现接口的方法。A虽然是“伪军”,但它可以增强B,在调用B的方法前后都做些其他的事情。Spring AOP就是使用了动态代理完成了代码的动态“织入”。
全栈程序员站长
2022/07/02
3660
Java两种动态代理JDK动态代理和CGLIB动态代理[通俗易懂]
java 代理模式-静态代理与动态代理
    举个例子吧:我们生活中的租房问题。假如我们去租个房子,我们大多数情况下是不会知道房主(就是真正租房,一手货源)的,我们是不是都是先去某些租房平台,或者去找当地的中介去询问何时的房子。我们通过九牛二虎之力在中介那里找到了个物美价廉的房子后,你的租金是不是交给了中介,中介还会收取一些额外的推荐费啦,押金啦、手续费等之类的,那么好,这样的一小段,就已经出来了其中两大核心对象了。
Arebirth
2019/09/24
4330
java 代理模式-静态代理与动态代理
基于JDK动态代理的自定义拦截器
接口中定义了三个方法,分别是:前置方法、后置方法和环绕方法(此叫法类似Spring AOP中的前置通知、后置通知以及环绕通知)。三个方法拥有相同的参数:第一个参数是动态代理对象,第二个是真实服务对象,第三个是方法对象,第四个是方法需要的参数集合。
itlemon
2020/04/03
1.2K0
jdk静态代理,jdk动态代理,cglib动态代理
代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理商跟用户打交道。如果:公司接口中有一个卖产品的方法,那么公司需要实现这个方法,而代理商也必须实现这个方法。如果公司卖多少钱,代理商也卖多少钱,那么代理商就赚不了钱。所以代理商在调用公司的卖方法后,加上自己的利润然后再把产品卖给客户。而客户部直接跟公司打交道,或者客户根本不知道公司的存在,然而客户最终却买到了产品。
互扯程序
2019/07/01
5120
jdk静态代理,jdk动态代理,cglib动态代理
动态代理技术的运用
“ 在前一篇文章我们了解了Spring AOP的简单运用,我们发现面向切面编程的核心是动态代理,我们这篇文章主要就是看一下:JDK自带的动态代理和CGLIB的动态代理”
每天学Java
2020/06/02
2980
通俗易懂讲解一下代理模式
维基百科所说的优点抽象,这里我们简单来讲就是通过代理控制对象的访问,可以详细访问某个对象的方法,在这个方法调用处理,或调用后处理。
Dream城堡
2019/10/28
5020
通俗易懂讲解一下代理模式
推荐阅读
相关推荐
Spring高手之路17——动态代理的艺术与实践
更多 >
LV.3
这个人很懒,什么都没有留下~
目录
  • Dayjs介绍
  • Dayjs文档
  • 使用场景
  • 如何使用 Day.js
    • 基本用法
  • 解析日期
  • 操作日期
  • 比较日期
  • 本地化支持
    • 在 Vue.js 中使用 Day.js
      • 1. 在 Vue 组件中直接使用 Day.js
      • 2. 在 Vue 过滤器中使用 Day.js
      • 3. 在 Vuex 中使用 Day.js
      • 4. 在 Vue 中使用 Day.js 插件
      • 在 React 中使用 Day.js
      • 在 Node.js 中使用 Day.js
    • 总结一下🥳
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档