Working with dates and times in JavaScript can be challenging, especially when specific formats are required. This complexity often leads to inconsistencies in the dates and times within applications. As a result, developers turn to external tools and libraries such as Day.js to manage these operations easily and more accurately.
In this article, we will explore what Day.js is, its basic features, how to use it in your projects, how to extend its functionalities with plugins, and its browser support.
Day.js is an easy-to-use lightweight javascript library, designed for handling a wide range of date and time operations, allowing them to be presented in easily readable formats within web applications.
The library can be used on both the client-side(browser) and server-side(Node.Js) environments.
In modern web development, developers seek to prioritize speed and performance when building applications. Large imports and bulky library files are two common hindering factors of these attributes.
Fortunately, Day.js addresses these concerns with a compact file size of just 2KB, making it an ideal choice for managing date and time operations without compromising the application's performance.
To get started working with the Day.js library in your application, you first need to include it.
To use the library on the client-side, include the following script in the
tag of your HTML document.<script src="path/to/dayjs/dayjs.min.js"></script>
Alternatively, you can access the library via a CDN such as the jsdeliver CDN.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
To install the library as a dependency in your application, run the following command:
npm install dayjs
Next, import dayjs into your javascript file:
import dayjs from 'dayjs';
To create a new Day.js instance, call the dayjs() function. If no argument is passed, it returns an object representing the current date and time:
const currentDate = dayjs();
You can then reference this object to perform various operations on dates and times.
Since Day.js objects are immutable, any operations that would modify the object will return a new instance with the updated date and time.
To effectively work with dates and times we first need to be familiar with ISO and its DateTime format string.
The ISO (International Organization for Standardization) is a global non-governmental organization that develops and publishes international standards across various industries, ensuring consistency and quality worldwide.
One of the standards provided by ISO is the format for representing dates and times globally.
A typical ISO DateTime format string looks like this:
<script src="path/to/dayjs/dayjs.min.js"></script>
The native JavaScript Date object offers a toISOString() method, which helps convert a random date into an ISO string.
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
Now that we understand the ISO DateTime format, let's explore some of the key features of the Day.js library.
The Day.js library comes with a range of features, some of which can be used to format, parse, manipulate, query, and validate dates and times. Let's explore how we can make use of these key features.
The parsing feature provides a straightforward way to create a new Day.js object with a specific date and time. This can be done by passing a native JavaScript Date object, a date string, or a Unix timestamp to the dayjs() function.
npm install dayjs
The formatting feature allows you to display dates and times in a specific format. The following method is used to perform formatting on dates and times.
import dayjs from 'dayjs';
The manipulating feature allows you to adjust the dates and times in different ways. This can be done using the following methods.
const currentDate = dayjs();
"2024-12-25T14:30:00.049Z" // year-month-dayThour:minute:second.millisecondZ
new Date("may 9 2024").toISOString(); // Output: '2024-05-09T23:00:00.000Z'
const date1 = dayjs(new Date()); // called with native Date object. const date2 = dayjs("2024-08-15"); // called with an ISO date string const date3 = dayjs(1665613200000); // called with a Unix timestamp
The querying feature allows you to check and compare dates and times. This can be done using the following methods which return a boolean value.
<script src="path/to/dayjs/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
npm install dayjs
import dayjs from 'dayjs';
const currentDate = dayjs();
The validation feature provides a way to check if the format of the date provided is valid or not. This can be done using the following method:
"2024-12-25T14:30:00.049Z" // year-month-dayThour:minute:second.millisecondZ
The Day.js library offers a variety of independent plugins that can be used to extend its base functionalities. This enables developers to easily perform further complex date and time formatting in their applications.
To use a plugin, you first need to include it and then extend dayjs using the extend() method.
new Date("may 9 2024").toISOString(); // Output: '2024-05-09T23:00:00.000Z'
const date1 = dayjs(new Date()); // called with native Date object. const date2 = dayjs("2024-08-15"); // called with an ISO date string const date3 = dayjs(1665613200000); // called with a Unix timestamp
const formattedDate = dayjs().format("HH:mm:ss DD-MM-YYYY"); console.log(formattedDate); // '19:57:36 17-08-2024'
Now, let's explore how we can use two of the available plugins in an application.
The calendar plugin provides a convenient way to display dates and times in a more human-readable format. It is ideal for use in applications such as event reminders, project management, task planners, etc.
Let's take a look at a simple example of how we can use this plugin in an events reminder app.
To get started, we need to include the Day.js library and the calendar plugin via a CDN.
const futureDate = dayjs().add(5, 'days'); // Adds 5 days to the current date console.log(futureDate.format()); // Returns the added date in an ISO date format
Next, inside our javascript file, we extend dayjs with the calendar plugin and call the dayjs() function to create a new Day.js instance.
const pastDate = dayjs().subtract(2, 'months'); // Subtracts 2 months from the current date console.log(pastDate.format()); // Returns the subtracted date in an ISO date format
The Calendar plugin offers customization options to format how you want the dates and times to be presented. You can define a custom format using an object with the following exact properties:
const startOfMonth = dayjs().startOf('month'); // Sets the date to the start of the month console.log(startOfMonth.format()); // Returns the current date from the start of the month in an ISO date format
In the object, we escape words in the string values, by wrapping them around [] square brackets.
Using this object, we then display the date and time of the events in the event reminder app:
const endOfMonth = dayjs().endOf('month'); // Sets the date to the end of the month console.log(endOfMonth.format()); // Returns the current date from the end of the month in an ISO date format
In this example, the eventDate is set to a date months away from the present day. In that case, the date is displayed using the format provided in the sameElse property of the customFormat object.
If the date of the event eventually becomes a past date, such as a day in the previous week, for example:
<script src="path/to/dayjs/dayjs.min.js"></script>
The date is then displayed using the format specified in the lastWeek property of the customFormat object:
The RelativeTime plugin is a commonly used day.js plugin for displaying date and time differences as relative statements in user interfaces.
The plugin provides 4 different APIs for displaying past and future times:
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
npm install dayjs
import dayjs from 'dayjs';
const currentDate = dayjs();
Let's take a look at a simple example of how we can use the RelativeTime plugin to display the timestamp for comments posted in an application's comment section.
As usual, the first step to take is to include the dayjs and the relativeTime plugin as follows:
"2024-12-25T14:30:00.049Z" // year-month-dayThour:minute:second.millisecondZ
Then, we extend dayjs with the relativeTime plugin:
new Date("may 9 2024").toISOString(); // Output: '2024-05-09T23:00:00.000Z'
After that, we can then display the time a comment was posted, in relation to the current Time:
const date1 = dayjs(new Date()); // called with native Date object. const date2 = dayjs("2024-08-15"); // called with an ISO date string const date3 = dayjs(1665613200000); // called with a Unix timestamp
At the time the above code was executed, the commentPostedTime variable was set to the current time, which then resulted in the following relative time string output in the comment:
The Day.js library is supported in all modern web browsers. It has an active community with over 19 million NPM downloads.
The library is actively maintained with over 46k github stars and 330 contributors ensuring it remains up-to-date and compatible with the latest JavaScript standards.
In conclusion, utilizing the Day.js library to handle the dates and times operations in your application not only maintains speed and performance but also helps save time by providing ready-to-use functions that can easily be used to format, query, manipulate, parse, and validate dates and times.
The above is the detailed content of Easily handle dates and times operations in your application using Day.js. For more information, please follow other related articles on the PHP Chinese website!