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 DatesTimes 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 (DateIntl.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.