簡介
Day.js 是一個輕量的處理時間和日期的 JavaScript 庫,和 Moment.js 的 API 設計保持完全一樣. 如果您曾經用過 Moment.js, 那么您已經知道如何使用 Day.js
安裝
npm install dayjs --save
import dayjs from 'dayjs'
// 或者 CommonJS
// var dayjs = require('dayjs');
dayjs().format()
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')
Date 對象
可以解析傳入的一個 Javascript Date 對象。
dayjs(Date)
dayjs(new Date(2018, 8, 18))
Unix 時間戳 (毫秒)
可以解析傳入的一個 Unix 時間戳 (13 位數字)。
dayjs(Number)
dayjs(1318781876406)
Unix 時間戳 (秒)
可以解析傳入的一個 Unix 時間戳 (10 位數字)。
dayjs.unix(Number)
dayjs.unix(1318781876)
自定義時間格式
- 解析自定義時間格式如
dayjs("12-25-1995", "MM-DD-YYYY")
可以使用插件CustomParseFormat
復制
Dayjs
對象是不可變的,如果您想獲得一個對象的拷貝,請執行 .clone()
。
向 dayjs()
里傳入一個 Dayjs
對象也能實現同樣的效果。
dayjs(Dayjs)
dayjs().clone()
驗證
- return Boolean
檢測當前 Dayjs
對象是否是一個有效的時間。
dayjs().isValid()
獲取+設置
獲取和改變日期。
年
獲取或設置年份。
dayjs().year()
dayjs().year(2000)
月
獲取或設置月份。從 0 開始
dayjs().month()
dayjs().month(0)
日
獲取或設置日期。從 1 開始
dayjs().date()
dayjs().date(1)
星期
獲取或設置星期。從星期天 0 開始
dayjs().day()
dayjs().day(0)
時
獲取或設置小時。
dayjs().hour()
dayjs().hour(12)
分
獲取或設置分鍾。
dayjs().minute()
dayjs().minute(59)
秒
獲取或設置秒。
dayjs().second()
dayjs().second(1)
毫秒
獲取或設置毫秒。
dayjs().millisecond()
dayjs().millisecond(1)
獲取
獲取從 Dayjs
對象中取到的信息
傳入的單位 (unit) 對大小寫不敏感。
dayjs().get(unit : String)
dayjs().get('month') // 從 0 開始
dayjs().get('day')
可用單位
單位 | 縮寫 | 描述 |
---|---|---|
date |
日期 | |
day |
d |
星期幾 (星期天 0, 星期六 6) |
month |
M |
月 (一月 0, 十二月 11) |
year |
y |
年 |
hour |
h |
時 |
minute |
m |
分 |
second |
s |
秒 |
millisecond |
ms |
毫秒 |
設置
設置時間
dayjs().set(unit : String, value : Int);
dayjs().set('date', 1);
dayjs().set('month', 3); // 四月
dayjs().set('second', 30);
操作
您可以對 Dayjs
對象如下增加減少之類的操作:
dayjs()
.startOf('month')
.add(1, 'day')
.subtract(1, 'year')
增加
增加時間並返回一個新的 Dayjs()
對象。
dayjs().add(value : Number, unit : String);
dayjs().add(7, 'day');
減少
減少時間並返回一個新的 Dayjs()
對象。
dayjs().subtract(value : Number, unit : String);
dayjs().subtract(7, 'year');
開頭時間
返回當前時間的開頭時間的 Dayjs()
對象,如月份的第一天。
dayjs().startOf(unit : String);
dayjs().startOf('week'); // 取決於 locale 文件里 `weekStart` 的值
末尾時間
返回當前時間的末尾時間的 Dayjs()
對象,如月份的最后一天。
dayjs().endOf(unit : String);
dayjs().endOf('month');
顯示
格式化 Dayjs
對象並展示。
格式化
- return String
接收一系列的時間日期字符串並替換成相應的值。
dayjs().format(String)
dayjs('2019-01-25').format('[YYYY] YYYY-MM-DDTHH:mm:ssZ[Z]') // 'YYYY 2019-01-25T00:00:00-02:00Z'
dayjs().format('{YYYY} MM-DDTHH:mm:ssZ[Z]') // "{2014} 09-08T08:02:17-05:00Z"
詳情如下:
格式 | 輸出 | 描述 |
---|---|---|
YY |
18 | 兩位數的年份 |
YYYY |
2018 | 四位數的年份 |
M |
1-12 | 月份,從 1 開始 |
MM |
01-12 | 月份,兩位數 |
MMM |
Jan-Dec | 簡寫的月份名稱 |
MMMM |
January-December | 完整的月份名稱 |
D |
1-31 | 月份里的一天 |
DD |
01-31 | 月份里的一天,兩位數 |
d |
0-6 | 一周中的一天,星期天是 0 |
dd |
Su-Sa | 最簡寫的一周中一天的名稱 |
ddd |
Sun-Sat | 簡寫的一周中一天的名稱 |
dddd |
Sunday-Saturday | 一周中一天的名稱 |
H |
0-23 | 小時 |
HH |
00-23 | 小時,兩位數 |
h |
1-12 | 小時, 12 小時制 |
hh |
01-12 | Hours, 12 小時制, 兩位數 |
m |
0-59 | 分鍾 |
mm |
00-59 | 分鍾,兩位數 |
s |
0-59 | 秒 |
ss |
00-59 | 秒 兩位數 |
SSS |
000-999 | 毫秒 三位數 |
Z |
+5:00 | UTC 的偏移量 |
ZZ |
+0500 | UTC 的偏移量,數字前面加上 0 |
A |
AM PM | |
a |
am pm |
- 更多格式化的選項
Q Do k kk X x ...
可以使用插件AdvancedFormat
- 本地化的長日期格式
L LT LTS ...
可以使用插件LocalizedFormat
時間差
- return Number
獲取兩個 Dayjs
對象的時間差,默認毫秒。
const date1 = dayjs('2019-01-25')
const date2 = dayjs('2018-06-05')
date1.diff(date2) // 20214000000
date1.diff(date2, 'month') // 7
date1.diff(date2, 'month', true) // 7.645161290322581
date1.diff(date2, 'day') // 233
Unix 時間戳 (毫秒)
- return Number
返回 Unix 時間戳 (毫秒)
dayjs().valueOf()
Unix 時間戳 (秒)
- return Number
返回 Unix 時間戳 (秒)。
dayjs().unix()
UTC 偏移量 (分)
返回 UTC 偏移量 (分)
dayjs().utcOffset()
天數 (月)
- return Number
返回月份的天數。
dayjs().daysInMonth()
Date 對象
- return Javascript
Date
object
返回原生的 Date
對象。
dayjs().toDate()
As JSON
- return JSON String
當序列化 Dayjs
對象時,會返回 ISO8601 格式的字符串。
dayjs().toJSON() //"2018-08-08T00:00:00.000Z"
ISO 8601 字符串
- return String
返回 ISO8601 格式的字符串。
dayjs().toISOString()
字符串
- return String
dayjs().toString()
查詢
是否之前
- return Boolean
檢查一個 Dayjs
對象是否在另一個 Dayjs
對象時間之前。
dayjs().isBefore(Dayjs, unit? : String);
dayjs().isBefore(dayjs()); // false
dayjs().isBefore(dayjs(), 'year'); // false
是否相同
- return Boolean
檢查一個 Dayjs
對象是否和另一個 Dayjs
對象時間相同。
dayjs().isSame(Dayjs, unit? : String);
dayjs().isSame(dayjs()); // true
dayjs().isSame(dayjs(), 'year'); // true
是否之后
- return Boolean
檢查一個 Dayjs
對象是否在另一個 Dayjs
對象時間之后。
dayjs().isAfter(Dayjs, unit? : String);
dayjs().isAfter(dayjs()); // false
dayjs().isAfter(dayjs(), 'year'); // false
是否是 Dayjs .isDayjs(compared: any)
返回一個 boolean
驗證傳入值是否是一個 Dayjs 對象.
dayjs.isDayjs(dayjs()) // true
dayjs.isDayjs(new Date()) // false
也可以使用 instanceof
dayjs() instanceof dayjs // true
UTC
如果想要使用 UTC 模式來解析和展示時間,.utc
.local
.isUTC
可以使用插件 UTC
插件 APIs
相對時間
.from
.to
.fromNow
.toNow
獲得相對時間
插件 RelativeTime
是否是閏年
.isLeapYear
獲得是否閏年
插件 IsLeapYear
年中的第幾周
.week
獲取是第幾個周
插件 WeekOfYear
星期
.weekday
來獲取或設置當前語言的星期
plugin WeekDay
年中有幾周 ISO
.isoWeeksInYear
獲得年中有幾周
plugin IsoWeeksInYear
是否相同或之后
.isSameOrAfter
返回一個時間和一個時間相同或在一個時間之后
是否相同或之前
.isSameOrBefore
返回一個時間是否和一個時間相同或在一個時間之前
是否之間
.isBetween
返回一個時間是否介於兩個時間之間
插件 IsBetween
年中第幾季度
.quarter
返回年中第幾季度
轉成數組
.toArray
返回包含時間數值的數組。
插件 ToArray
轉成對象
.toObject
返回包含時間數值的對象
插件 ToObject
最小最大
.min
.max
比較傳入的 dayjs 實例的大小
plugin MinMax
日歷時間
.calendar
來顯示日歷時間
plugin Calendar
更多最新內容參考:https://github.com/iamkun/dayjs/blob/master/docs/zh-cn/README.zh-CN.md