1. 程式人生 > >日期處理類庫moment.js使用記錄

日期處理類庫moment.js使用記錄

Moment.js 是我用過的最好用的操作時間的工具庫。它使得操作時間變得很簡單。

 

1、建立

moment() // 當前時間
moment("1995-12-25") // 1995-12-25
moment("12-25-1995", "MM-DD-YYYY") // 1995-12-25
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123})
moment(Date.now() - 24 * 60 * 60 * 1000) // 昨天
moment(new Date(2011, 9, 16)) // 2011-10-16

2、格式化

當前時間:moment().format('YYYY-MM-DD HH:mm:ss'); //2018-06-24 23:36:09 

星期幾:moment().format('d'); //3 

最常用的是時間格式化:

 

格式程式碼 說明 返回值例子
M 數字表示的月份,沒有前導零 1到12
MM 數字表示的月份,有前導零 01到12
MMM 三個字母縮寫表示的月份 Jan到Dec
MMMM 月份,完整的文字格式 January到December
Q 季度 1到4
D 月份中的第幾天,沒有前導零 1到31
DD 月份中的第幾天,有前導零 01到31
d 星期中的第幾天,數字表示 0到6,0表示週日,6表示週六
ddd 三個字母表示星期中的第幾天 Sun到Sat
dddd 星期幾,完整的星期文字 從Sunday到Saturday
w 年份中的第幾周 如42:表示第42周
YYYY 四位數字完整表示的年份 如:2014 或 2000
YY 兩位數字表示的年份 如:14 或 98
A 大寫的AM PM AM PM
a 小寫的am pm am pm
HH 小時,24小時制,有前導零 00到23
H 小時,24小時制,無前導零 0到23
hh 小時,12小時制,有前導零 00到12
h 小時,12小時制,無前導零 0到12
m 沒有前導零的分鐘數 0到59
mm 有前導零的分鐘數 00到59
s 沒有前導零的秒數 1到59
ss 有前導零的描述 01到59
X Unix時間戳 1411572969

 

3、轉化成 Date 物件

moment().toDate()

4、獲取/設定時間資訊

moment().second() //獲得 秒
moment().second(Number) //設定 秒。0 到 59
moment().minute() //獲得 分
moment().minute(Number) //設定 分。0 到 59
// 類似的用法
moment().hour() // 小時
moment().date() // 一個月裡的第幾天
moment().day() // 星期幾
moment().dayOfYear() // 一年裡的第幾天
moment().week() // 一年裡的第幾周
moment().month() // 第幾個月
moment().quarter() // 一年裡的第幾個季度
moment().year() // 年
moment().daysInMonth() // 當前月有多少天

5、操作

  操作有:加法,減法、開始時間、結束時間

moment().add(7, 'days') // 之後的第7天。第2個引數還可以是 'months', 'years' 等。注意是複數。
moment().add(7, 'd')// 與上面一行程式碼的執行結果一樣。
moment().subtract(1, 'months') // 上個月

moment().startOf('week') // 這周的第一天
moment().startOf('hour') // 等效與 moment().minutes(0).seconds(0).milliseconds(0)。
// 還支援 'year','month' 等

moment().startOf('year');    // set to January 1st, 12:00 am this year
moment().startOf('month');   // set to the first of this month, 12:00 am
moment().startOf('quarter');  // set to the beginning of the current quarter, 1st day of months, 12:00 am
moment().startOf('week');    // set to the first day of this week, 12:00 am
moment().startOf('isoWeek'); // set to the first day of this week according to ISO 8601, 12:00 am
moment().startOf('day');     // set to 12:00 am today
moment().startOf('hour');    // set to now, but with 0 mins, 0 secs, and 0 ms
moment().startOf('minute');  // set to now, but with 0 seconds and 0 milliseconds
moment().startOf('second');  // same as moment().milliseconds(0);

moment().endOf('week')
moment().startOf('year');
//等價於
moment().month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0);



moment().startOf('hour');
//等價於
moment().minutes(0).seconds(0).milliseconds(0)

6、查詢

// 早於
moment('2010-10-20').isBefore('2010-10-21') // true
moment('2010-10-20').isBefore('2010-12-31', 'year') // false
moment('2010-10-20').isBefore('2011-01-01', 'year') // true

// 是否相等
moment('2010-10-20').isSame('2010-10-20') // true
moment('2010-10-20').isSame('2009-12-31', 'year')  // false
moment('2010-10-20').isSame('2010-01-01', 'year')  // true

// 晚於
moment('2010-10-20').isAfter('2010-10-19') // true
moment('2010-10-20').isAfter('2010-01-01', 'year') // false
moment('2010-10-20').isAfter('2009-12-31', 'year') // true

// 是否在時間範圍內
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25') // true
moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year') // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year') // true

moment().isLeapYear() // 是否是閏年