dayjs​​​​​​​文档

本文介绍了 Dayjs.js 的核心功能,包括创建、解析、格式化日期时间,进行时间操作及比较等。Dayjs 是一个轻量级的 JavaScript 库,用于替代原生 Date 对象,提供了丰富的 API 和插件来简化日期时间的处理。

转载自   dayjs

API

Dayjs 并没有改变或覆盖 Javascript 原生的 Date.prototype, 而是创造了一个全新的包含 Javascript Date 对象的 Dayjs的对象。

Dayjs 对象是不可变的, 所有的 API 操作都将返回一个新的 Dayjs 对象。


如果没有特别说明,Day.js 的返回值都是新的 Dayjs 对象。

解析

在 dayjs() 中传入支持的格式

当前时间

直接运行 dayjs(),得到包含当前时间和日期的 Dayjs 对象。

dayjs();

时间字符串

可以解析传入的一个标准的ISO 8601时间字符串。

dayjs(String);
dayjs("1995-12-25");

Unix 时间戳 (毫秒)

可以解析传入的一个 Unix 时间戳 (13位数字)。

dayjs(Number);
dayjs(1318781876406);

Date 对象

可以解析传入的一个 Javascript Date 对象。

dayjs(Date);
dayjs(new Date(2018, 8, 18));

复制

Dayjs 对象是不可变的,如果您想获得一个对象的拷贝,请执行 .clone()。 向 dayjs() 里传入一个 Dayjs 对象也能实现同样的效果。

dayjs(Dayjs);
dayjs().clone();

验证

  • return Boolean

检测当前 Dayjs 对象是否是一个有效的时间。

dayjs().isValid();

获取+设置

获取和改变日期。

  • return Number

获取年份。

dayjs().year();

  • return Number

获取月份。

dayjs().month();

  • return Number

获取日期。

dayjs().date();

星期

  • return Number

获取星期。

dayjs().day();

  • return Number

获取小时。

dayjs().hour();

  • return Number

获取分钟。

dayjs().minute();

  • return Number

获取秒。

dayjs().second();

毫秒

  • return Number

获取毫秒。

dayjs().millisecond();

设置

设置时间 传入的单位 (unit) 对大小写不敏感。

dayjs().set(unit : String, value : Int);
dayjs().set('date', 1);
dayjs().set('month', 3); // 四月
dayjs().set('second', 30);

可用单位

单位缩写描述
date 日期
dayd星期几 (星期天 0, 星期六 6)
monthM
yeary
hourh
minutem
seconds
millisecondms毫秒

操作

您可以对 Dayjs 对象如下增加减少之类的操作:

dayjs().startOf('month').add(1, 'day').subtract(1, 'year')

增加

增加时间并返回一个新的 Dayjs() 对象。

dayjs().add(value : Number, unit : String);
dayjs().add(7, 'day');

减少

减少时间并返回一个新的 Dayjs() 对象,使用方法和 dayjs#add 相同。

dayjs().subtract(value : Number, unit : String);
dayjs().subtract(7, 'year');

开头时间

返回当前时间的开头时间的 Dayjs() 对象,如月份的第一天。

dayjs().startOf(unit : String);
dayjs().startOf('year');

末尾时间

返回当前时间的末尾时间的 Dayjs() 对象,如月份的最后一天。

dayjs().endOf(unit : String);
dayjs().endOf('month');

显示

格式化 Dayjs 对象并展示。

格式化

  • return String

接收一系列的时间日期字符串并替换成相应的值。

dayjs().format(String);
dayjs().format();                       // "2014-09-08T08:02:17-05:00" (ISO 8601, no fractional seconds)
dayjs().format("{YYYY} MM-DDTHH:mm:ssZ[Z]"); // "{2014} 09-08T08:02:17-05:00Z"

详情如下:

FormatOutputDescription
YY18两位数的年份
YYYY2018四位数的年份
M1-12月份,从 1 开始
MM01-12月份,两位数
MMMJan-Dec简写的月份名称
MMMMJanuary-December完整的月份名称
D1-31月份里的一天
DD01-31月份里的一天,两位数
d0-6一周中的一天,星期天是 0
ddSu-Sa最简写的一周中一天的名称
dddSun-Sat简写的一周中一天的名称
ddddSunday-Saturday一周中一天的名称
H0-23小时
HH00-23小时,两位数
m0-59分钟
mm00-59分钟,两位数
s0-59
ss00-59秒 两位数
SSS000-999秒 三位数
Z+5:00UTC 的偏移量
ZZ+0500UTC 的偏移量,数字前面加上 0
AAM PM 
aam pm 
  • 更多格式化的选项 Q Do k kk X x ... 可以使用插件 AdvancedFormat

时间差

  • return Number

获取两个 Dayjs 对象的时间差,默认毫秒。

dayjs().diff(Dayjs, unit);
dayjs().diff(dayjs(), 'years'); // 0

Unix 时间戳 (毫秒)

  • return Number

返回 Unix 时间戳 (毫秒)

dayjs().valueOf();

Unix 时间戳 (秒)

  • return Number

返回 Unix 时间戳 (秒)。

dayjs().unix();

天数 (月)

  • return Number

返回月份的天数。

dayjs().daysInMonth();

Date 对象

  • return Javascript Date object

返回原生的 Date 对象。

dayjs().toDate();

数组

  • return Array

返回包含时间数值的数组。

dayjs().toArray(); //[2018, 8, 18, 00, 00, 00, 000];

As JSON

  • return JSON String

当序列化 Dayjs 对象时,会返回 ISO8601 格式的字符串。

dayjs().toJSON(); //"2018-08-08T00:00:00.000Z"

ISO 8601 字符串

  • return String

返回 ISO8601 格式的字符串。

dayjs().toISOString();

对象

  • return Object

返回包含时间数值的对象。

dayjs().toObject();// { years:2018, months:8, date:18, hours:0, minutes:0, seconds:0, milliseconds:0}

字符串

  • return String
dayjs().toString();

查询

是否之前

  • return Boolean

检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之前。

dayjs().isBefore(Dayjs);
dayjs().isBefore(dayjs()); // false

是否相同

  • return Boolean

检查一个 Dayjs 对象是否和另一个 Dayjs 对象时间相同。

dayjs().isSame(Dayjs);
dayjs().isSame(dayjs()); // true

是否之后

  • return Boolean

检查一个 Dayjs 对象是否在另一个 Dayjs 对象时间之后。

dayjs().isAfter(Dayjs);
dayjs().isAfter(dayjs()); // false

是否是 Dayjs .isDayjs(compared: any)

返回一个 boolean 验证传入值是否是一个 Dayjs 对象.

dayjs.isDayjs(dayjs()); // true
dayjs.isDayjs(new Date()); // false

插件 APIs

相对时间

.from .to .fromNow .toNow 获得相对时间

插件 RelativeTime

是否是闰年

.isLeapYear 获得是否闰年

插件 IsLeapYear

年中的第几周

.week 获取是第几个周

插件 WeekOfYear

是否之间

.isBetween 返回一个时间是否介于两个时间之间

Day.js 是一个轻量级的 JavaScript 时间日期处理库,其官方文档提供了全面的 API 说明和使用示例。可以通过访问 Day.js 的官方网站来获取最新的官方文档:[https://day.js.org](https://day.js.org)[^1]。 在官方文档中,可以找到以下内容: - **安装和引入**:包括如何通过 npm 安装 Day.js,以及如何在浏览器或模块化项目中引入使用。 - **核心功能**:如日期解析、格式化、操作(增加或减少时间)、比较日期等功能的使用方法。 - **插件系统**:Day.js 支持一系列插件来扩展其功能,例如相对时间(`relativeTime`)、自定义区域设置(`localizedFormat`)等[^1]。 - **国际化支持**:文档中详细说明了如何配置和使用不同的语言包,以支持多语言环境。 以下是一个简单的 Day.js 使用示例: ```javascript // 引入 Day.js const dayjs = require('dayjs'); // 格式化日期 console.log(dayjs().format('YYYY-MM-DD HH:mm:ss')); // 输出当前时间,格式为年-月-日 时:分:秒 // 日期加减操作 const tomorrow = dayjs().add(1, 'day'); console.log(tomorrow.format('YYYY-MM-DD')); // 输出明天的日期 // 日期比较 const isAfter = dayjs('2023-09-01').isAfter('2023-08-01'); console.log(isAfter); // 输出 true ``` 如果需要更高级的功能,可以结合插件使用,例如: ```javascript // 引入 relativeTime 插件 const relativeTime = require('dayjs/plugin/relativeTime'); dayjs.extend(relativeTime); // 输出相对时间 console.log(dayjs().subtract(1, 'hour').fromNow()); // 输出 "an hour ago" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值