4 gói để làm việc với ngày và giờ trong JavaScript

Hỗ trợ tích hợp sẵn của JavaScript để xử lý ngày tháng rất hữu ích nhưng có thể hơi khó sử dụng. Các hoạt động phức tạp như chuyển đổi múi giờ và định dạng ngày thường là một thách thức.
May mắn thay, có sẵn một số gói giúp làm việc với ngày và giờ trong JavaScript bớt căng thẳng hơn. Tại đây, bạn sẽ tìm hiểu về một số gói này và cách bạn có thể bắt đầu làm việc với các gói này.
Khi làm việc với ngày và giờ, đối tượng Ngày trong JavaScript gốc có chức năng hạn chế.
Moment.js, một thư viện JavaScript, đã giới thiệu nhiều tính năng không khả dụng trong đối tượng Date gốc. Kết quả là, nó trở thành thư viện truy cập để làm việc với ngày và giờ.
Để cài đặt Moment.js với npm, hãy chạy lệnh sau từ thư mục dự án của bạn:
npm install moment
Sau khi cài đặt, bạn có thể nhập Moment.js vào dự án của mình và thực hiện các thao tác với thư viện:
const moment = require('moment');
const now = moment();
const nowString = now.format('YYYY-MM-DD HH:mm:ss');console.log(`The current date and time is ${nowString}`);
Đoạn mã này nhập thư viện Moment.js và tạo một đối tượng khoảnh khắc sử dụng ngày và giờ hiện tại với chốc lát() chức năng. Sau đó, nó trình bày cách định dạng đối tượng ngày đã tạo dưới dạng một chuỗi với định dạng() phương thức lấy định dạng ngày/giờ làm đối số.
Bạn cũng có thể sử dụng thư viện này để cộng và trừ các khoảng thời gian:
const addTenMinutes = moment().add(10, 'minutes');
console.log(`${addTenMinutes.format('h:mm a')}`);const subtractTwoDays = moment().subtract(2, 'days');
console.log(`${subtractTwoDays.format('dddd, MMMM Do YYYY')}`);
Chương trình ghi hai biến vào bảng điều khiển, ở các định dạng khác nhau. đầu tiên, thêmMười phút, giữ kết quả của việc thêm 10 phút vào ngày và giờ hiện tại. Thư hai, trừ hai ngàycó giá trị ngày và giờ hiện tại với hai ngày bị trừ đi.
Moment.js có thể thực hiện các hoạt động khác như kiểm tra năm nhuận và chuyển đổi từ định dạng ngày này sang định dạng ngày khác.
Điều quan trọng cần lưu ý là Moment.js không còn được duy trì bởi nhóm nhà phát triển cốt lõi của nó. Các nhà phát triển khuyên nên sử dụng giải pháp thay thế như Luxon.js.
Luxon.js là một thư viện JavaScript mạnh mẽ và hiện đại hơn để làm việc với ngày tháng. Một giải pháp thay thế cho Moment.js, nó giải quyết các hạn chế của thư viện cũ hơn như khả năng thay đổi.
Bạn có thể cài đặt Luxon với npm và sau đó nhập nó Ngày giờ lớp trong dự án Node.js của bạn bằng cách sử dụng yêu cầu() chức năng:
const { DateTime } = require('luxon');
Ở Luxon, các đối tượng DateTime đề cập đến các trường hợp thời gian giảm xuống còn mili giây.
Bạn có thể tạo mới Ngày giờ các đối tượng và truy cập các thành phần của chúng, như năm, tháng, phút và giây:
const now = DateTime.now();
const year = now.year;
const minute = now.minute;
const second = now.second;
Mã này tạo ra một cái mới Ngày giờ đối tượng đại diện cho ngày và thời gian hiện tại bằng cách sử dụng Hiện nay() phương pháp. Sau đó, nó truy cập các thành phần của ngày đó bằng cách sử dụng năm, phútVà thứ hai của cải.
Một điểm khác biệt chính giữa Luxon.js và Moment.js là đặc tính bất biến của nó. Tất cả các đối tượng DateTime là bất biến trong Luxon, nghĩa là bạn không thể sửa đổi các thuộc tính DateTime. Thay vào đó, bạn có thể tạo các phiên bản DateTime mới từ những phiên bản hiện có.
Ví dụ:
const now = DateTime.now();
const tomorrow = now.plus({ days: 1 });
Mã này tạo ra một cái mới Ngày giờ đối tượng được đặt tên Ngày mai dựa vào Hiện nay đối tượng, sử dụng thêm phương thức, chuyển cho nó giá trị 1 ngày làm đối số. Phương thức cộng tạo một đối tượng DateTime mới với số ngày đã chỉ định được thêm vào đối tượng ban đầu.
Một ưu điểm khác của Luxon.js là hỗ trợ múi giờ đáng tin cậy, điều cần thiết để làm việc với ngày và giờ trong các ứng dụng web hiện đại. Thư viện sử dụng API quốc tế hóa trong các trình duyệt hiện đại để cung cấp hỗ trợ múi giờ chính xác.
Tuy nhiên, một trong những nhược điểm của Luxon.js là tài nguyên cộng đồng hạn chế.
Date-fns là một thư viện JavaScript rất nhẹ được thiết kế để làm việc với ngày và giờ. Nó được xây dựng trên Đối tượng JavaScript gốc.
Date-fns sử dụng các kỹ thuật lập trình chức năng và kết hợp một tính năng bất biến, giúp làm việc với ngày tháng đơn giản hơn và giảm khả năng xảy ra lỗi trong mã của bạn.
Sau khi cài đặt date-fns với npm, hãy nhập gói vào chương trình của bạn bằng hàm yêu cầu:
const { format, addDays } = require('date-fns');
Date-fns là mô-đun. Nó chứa rất nhiều chức năng mà bạn có thể truy cập bằng cách phá hủy gói, như được hiển thị trong khối mã ở trên. Mã này chỉ nhập các hàm định dạng và addDays từ thư viện date-fns.
Dưới đây là một ví dụ về cách sử dụng cả hai chức năng đó:
const today = new Date();
const formattedDate = format(today, 'yyyy-MM-dd');
console.log(formattedDate); const tomorrow = format(addDays(today, 1), 'yyyy-MM-dd');
console.log(tomorrow);
Chương trình này minh họa cách sử dụng thư viện date-fns trong JavaScript để định dạng và thao tác ngày tháng.
Nó tạo ra một cái mới Ngày đối tượng đại diện cho ngày hiện tại. Nó định dạng ngày hiện tại bằng cách sử dụng định dạng chức năng từ thư viện date-fns.
Sau đó, nó sử dụng thêm ngày để tạo một đối tượng Date mới đại diện cho ngày mai, định dạng nó bằng cách sử dụng định dạng và ghi cả ngày hiện tại và ngày mai vào bảng điều khiển trong “yyyy-MM-dd” định dạng.
Nhược điểm của việc sử dụng Date-fns là nó không cung cấp hỗ trợ múi giờ. Thay vào đó, nó sử dụng một thư viện riêng biệt để làm việc với các múi giờ bằng cách sử dụng các hàm trợ giúp.
Day.js, một thư viện rất nhẹ khác, là một lựa chọn tốt nếu bạn đang tìm kiếm một giải pháp thay thế không thay đổi, nhỏ hơn, nhanh hơn cho Moment.js.
Bạn có thể cài đặt Day.js dưới dạng gói trong dự án JavaScript của mình bằng cách chạy lệnh npm sau:
npm install dayjs
Để nhập Day.js vào dự án của bạn sau khi cài đặt, bạn có thể sử dụng đoạn mã sau:
const dayjs = require('dayjs')
Dưới đây là một số hàm và phương thức cơ bản có sẵn trong Day.js
const now = dayjs();const date = dayjs('2023-03-23', 'YYYY-MM-DD');
const month = date.month();
const formattedDate = date.format('MMMM D, YYYY');
const nextWeek = date.add(1, 'week');
Đoạn mã trên tạo một đối tượng Day.js mới biểu thị ngày và giờ hiện tại, phân tích chuỗi ngày với định dạng tùy chỉnh và lấy tháng từ ngày Biến đổi. Nó cũng chỉ ra cách định dạng và thêm vào một thể hiện ngày tháng.
Giống như Date-fns, Day.js không thể tự cung cấp hỗ trợ múi giờ. Day.js sử dụng một hệ thống plugin, khiến việc sử dụng trở nên khó hiểu.
Trong số các gói được đề cập, Day.js giống với Moment.js nhất. Điều này giúp bạn dễ dàng chuyển đổi giữa cả hai nếu cần.
Chọn thư viện phù hợp cho ứng dụng của bạn
Việc chọn thư viện ngày và giờ phù hợp cho ứng dụng JavaScript của bạn là một quyết định quan trọng có thể ảnh hưởng lớn đến chất lượng và khả năng bảo trì mã của bạn.
Mỗi thư viện được thảo luận ở đây đều có điểm mạnh và điểm yếu, vì vậy điều quan trọng là phải đánh giá cẩn thận các yêu cầu của bạn trước khi đưa ra quyết định.