Moment.js là một thư viện JavaScript phổ biến giúp thao tác với ngày tháng và thời gian dễ dàng hơn. Tuy nhiên, Moment.js hiện đã ngừng phát triển chính thức, và thư viện này vẫn được sử dụng rộng rãi do tính tiện dụng và đơn giản trong việc làm việc với ngày tháng.
Dưới đây là một số thao tác cơ bản với Dates và Times sử dụng Moment.js:
1. Khởi tạo một đối tượng ngày và giờ
Bạn có thể tạo một đối tượng Moment với thời gian hiện tại hoặc một thời gian cụ thể.
1.1. Tạo thời gian hiện tại
var now = moment();
console.log(now.format());
1.2. Tạo một thời gian cụ thể
var specificDate = moment("2023-09-22", "YYYY-MM-DD");
console.log(specificDate.format());
Bạn cũng có thể tạo từ các chuỗi thời gian với nhiều định dạng khác nhau:
var customDate = moment("2023-09-22 14:30", "YYYY-MM-DD HH:mm");
console.log(customDate.format());
2. Định dạng ngày tháng
Moment.js
cho phép định dạng ngày tháng theo nhiều cách khác nhau.
2.1. Định dạng cơ bản
var now = moment();
console.log(now.format("YYYY-MM-DD")); // 2024-09-22
console.log(now.format("DD/MM/YYYY")); // 22/09/2024
console.log(now.format("MMMM Do YYYY")); // September 22nd 2024
2.2. Định dạng thời gian
console.log(now.format("HH:mm:ss")); // 14:30:45
console.log(now.format("hh:mm A")); // 02:30 PM
3. Thao tác với thời gian (Thêm/Xóa)
3.1. Thêm thời gian
var now = moment();
var newDate = now.add(7, 'days'); // Thêm 7 ngày
console.log(newDate.format("YYYY-MM-DD"));
Các đơn vị thời gian có thể sử dụng:
seconds
(giây)
minutes
(phút)
hours
(giờ)
days
(ngày)
months
(tháng)
years
(năm)
3.2. Xóa thời gian
var now = moment();
var newDate = now.subtract(2, 'months'); // Giảm 2 tháng
console.log(newDate.format("YYYY-MM-DD"));
4. So sánh ngày và giờ
4.1. Kiểm tra nếu một ngày là trước hoặc sau ngày khác
var date1 = moment("2023-09-22");
var date2 = moment("2023-09-30");
console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
4.2. Kiểm tra nếu hai ngày bằng nhau
console.log(date1.isSame(date2)); // false
5. Hiển thị khoảng thời gian giữa hai ngày
5.1. Hiển thị khoảng cách đơn giản giữa hai ngày
var date1 = moment("2023-09-22");
var date2 = moment("2023-09-30");
var diffInDays = date2.diff(date1, 'days');
console.log(diffInDays); // 8 ngày
5.2. Hiển thị khoảng cách chi tiết (năm, tháng, ngày)
var date1 = moment("2022-01-01");
var date2 = moment("2024-09-22");
console.log(date2.diff(date1, 'years')); // 2 năm
console.log(date2.diff(date1, 'months')); // 32 tháng
6. Xử lý múi giờ
Moment.js cung cấp hỗ trợ cho Moment Timezone để quản lý thời gian ở các múi giờ khác nhau.
6.1. Cài đặt Moment Timezone
Bạn cần cài đặt Moment Timezone:
npm install moment-timezone
6.2. Sử dụng múi giờ
var newYorkTime = moment.tz("2024-09-22 14:30", "America/New_York");
console.log(newYorkTime.format()); // Hiển thị thời gian tại New York
6.3. Chuyển đổi múi giờ
Bạn có thể chuyển đổi giữa các múi giờ:
var londonTime = newYorkTime.clone().tz("Europe/London");
console.log(londonTime.format()); // Hiển thị thời gian tại London
7. Các thao tác khác
7.1. Lấy ngày/tháng/năm hiện tại
var now = moment();
console.log(now.year()); // Lấy năm
console.log(now.month()); // Lấy tháng (0-11)
console.log(now.date()); // Lấy ngày
7.2. Thiết lập ngày/tháng/năm
var now = moment();
now.year(2025).month(11).date(25); // Đặt thành 25/12/2025
console.log(now.format("YYYY-MM-DD"));
Lưu ý: Mặc dù Moment.js vẫn được sử dụng rộng rãi, bạn nên xem xét các giải pháp hiện đại hơn như Day.js hoặc các API thời gian gốc của JavaScript (Date
và Intl.DateTimeFormat
) vì chúng nhẹ hơn và hiệu quả hơn.
Nếu bạn đã sử dụng Moment.js cho dự án hiện tại, các thao tác trên sẽ giúp bạn làm việc hiệu quả với ngày tháng và thời gian.