Hướng dẫn sử dụng Moment.js cơ bản

Moment.js là một thư viện tuyệt vời để làm việc với đối tượng date trên một trường browser và môi trường Nodejs.

Bài viết này nhằm giải thích những điều cơ bản và cách sử dụng phổ biến nhất của thư viện này.

Cài đặt

Bạn có thể nhúng nó trực tiếp vào trang của bạn bằng thẻ script giống như một file .js mở rộng thông thường, bạn có thể tải file thư viện về môi trường của bạn hoặc sử dụng trực tiếp đường link được cung cấp tại cdnjs.com hoặc jsDelivr.

<script src="https://cdn.jsdelivr.net/npm/[email protected]/moment.min.js"></script>

hoặc bạn có thể tải thư viện thông qua npm (hoặc yarn)

npm install moment

Nếu bạn cài đặt bằng npm, bạn cần import thư viện moment.js ở trong code của bạn (ví dụ với ES Modules):

import moment from 'moment'

hoặc cú pháp require (sử dụng CommonJS):

const moment = require('moment')

Lấy ngày và giờ hiện tại

const date = moment()

date là một đối tượng moment,

Convert một string thành đối tượng moment date

Một đối tượng moment có thể được khởi tạo với một string đại diện cho một giá trị date:

const date = moment(string)

nó chấp nhận bất kỳ format  nào, các format được dùng để chuyển từ string thành date (theo thứ tự ưu tiên từ trên xuống dưới):

ISO 8601  là tiện lợi nhất. Đây là tài liệu tham khảo định dạng theo format ISO 8601:
 
FormatMeaningExample
YYYY4-digits Year2018
YY2-digits Year18
M2-digits Month number, omits leading 07
MM2-digits Month number07
MMM3-letters Month nameJul
MMMMFull Month nameJuly
ddddFull day nameSunday
gggg4-digits Week year2018
gg2-digits Week year18
wWeek of the year without leading zero18
wwWeek of the year with leading zero18
eDay of the week, starts at 04
D2-digits day number, omits leading 09
DD2-digits day number09
DoDay number with ordinal9th
TIndicates the start of the time part 
HH2-digits hours (24 hour time) from 0 to 2322
H2-digits hours (24 hour time) from 0 to 23 without leading 022
kk2-digits hours (24 hour time) from 1 to 2423
k2-digits hours (24 hour time) from 1 to 24 without leading 023
a/Aam or pmpm
hh2-digits hours (12 hour time)11
mm2-digits minutes22
ss2-digits seconds40
s2-digits seconds without leading zero40
S1-digits milliseconds1
SS2-digits milliseconds12
SSS3-digits milliseconds123
ZThe timezone+02:00
xUNIX timestamp in milliseconds1410432140575

 

Chuyển đối tượng moment date sang string

Khi bạn muốn in ra một giá trị ngày tháng bằng đối tượng Date native của Javascript, bạn có rất ít tùy chọn để định dạng thông tin ngày tháng từ đối tượng Date. Bạn có thể tự xây dựng cách format đối tượng Date theo cách của bạn bằng cách sử dụng các phương thức có sẵn.

Moment cung cấp một cách thuận tiện để định dạng ngày theo nhu cầu của bạn, sử dụng phương thức .format():

date.format(string)

Format được chấp nhận giống như format được mô tả ở phần “Convert một string thành đối tượng moment date” ở trên.

Ví dụ:

moment().format("YYYY Do MM")
// "2019 3rd 06"

Moment còn cung cấp một số hằng số định dạng chuẩn, bạn có thể sử dụng chúng thay vì viết định dạng của riêng bạn:

ConstantFormatExample
moment.HTML5_FMT.DATETIME_LOCALYYYY-MM-DDTHH:mm2017-12-14T16:34
moment.HTML5_FMT.DATETIME_LOCAL_SECONDSYYYY-MM-DDTHH:mm:ss2017-12-14T16:34:10
moment.HTML5_FMT.DATETIME_LOCAL_MSYYYY-MM-DDTHH:mm:ss.SSS2017-12-14T16:34:10.234
moment.HTML5_FMT.DATEYYYY-MM-DD2017-12-14
moment.HTML5_FMT.TIMEHH:mm16:34
moment.HTML5_FMT.TIME_SECONDSHH:mm:ss16:34:10
moment.HTML5_FMT.TIME_MSHH:mm:ss.SSS16:34:10.234
moment.HTML5_FMT.WEEKYYYY-[W]WW2017-W50
moment.HTML5_FMT.MONTHYYYY-MM2017-12

Kiểm tra định dạng ngày tháng

Bất kỳ ngày nào cũng có thể được kiểm tra tính hợp lệ bằng phương thức .isValid ():
moment('2019-13-23').isValid() //false
moment('2019-11-23').isValid() //true

 

Khoảng thời gian từ quá khứ, tương lai (cho tới ngày)

Phương thức .fromNow() được sử dụng để lấy ra một string cho biết thời gian được cung cấp so với thời điểm hiện tại.

// today: 2019-06-03
moment('2016-11-23').fromNow()
// "3 years ago"
moment('2019-05-23').fromNow()
// "11 days ago"
moment('2019-11-23').fromNow()
// "in 6 months"
nếu bạn truyền tham số  fromNow() là true, hàm chỉ chỉ hiển thị sự khác biệt, không tham chiếu đến tương lai (in) / quá khứ(ago).
moment('2016-11-23').fromNow()
// "3 years"
moment('2019-05-23').fromNow()
// "11 days"
moment('2019-11-23').fromNow()
// "6 months"

 

Thao tác tính toán với một đối tượng Moment date

Bạn có thể thêm hoặc bớt bất kỳ khoảng thời gian nào cho một ngày:

moment('2018-11-23').add(1, 'years')
moment('2018-11-23').subtract(1, 'years')

Bạn có thể sử dụng các giá trị: years, quarters, months, weeks, days, hours, minutes, seconds, milliseconds

 

 

 

Từ khóa: , ,