Mastering Day.js: A Comprehensive Guide to Effortless Date and Time Management

Mastering Day.js: A Comprehensive Guide to Effortless Date and Time Management
Photo by Jason Mitrione / Unsplash

When working with JavaScript, handling dates and times can be tricky. That’s where Day.js, a minimalist JavaScript library, comes to the rescue. It provides a simple, clean, and consistent API for manipulating and formatting dates without the overhead of larger libraries like Moment.js. In this article, we’ll explore the core features of Day.js and add a few more tips to level up your date-handling skills.

First import it.

const dayjs = require("dayjs");

1. Creating Dates Made Simple

Day.js makes creating dates intuitive:

  • dayjs() gives you the current date and time.
  • You can also create specific dates: dayjs('2024-09-19').
  • Specify both date and time: dayjs('2024-09-19 12:00:00').

This functionality ensures a seamless way to initialize your dates.

2. Effortless Date Formatting

Formatting dates is one of the most commonly used features:

  • dayjs().format() provides the default ISO format.
  • Customize your formats:
dayjs().format('YYYY-MM-DD') // 2024-09-19
dayjs().format('DD/MM/YYYY') // 19/09/2024
dayjs().format('HH:mm:ss') // 12:00:00

These flexible formats cater to various date representations.

3. Parsing and Displaying Dates

Day.js makes parsed dates human-readable:

dayjs('2024-09-19').format('MMMM D, YYYY'); // September 19, 2024

This ensures clarity when dealing with date outputs in different formats.

4. Manipulating Dates with Ease

Modifying dates is straightforward:

  • Add or subtract time:
dayjs().add(1, 'day'); // Adds 1 day
dayjs().subtract(1, 'month'); // Subtracts 1 month
  • Find the start or end of a specific time period:
dayjs().startOf('month'); // Start of the month
dayjs().endOf('year'); // End of the year

These methods simplify date adjustments without complex calculations.

5. Comparing Dates

Day.js provides intuitive methods for comparisons:

  • Check if a date is before or after today:
dayjs('2024-09-19').isBefore(dayjs()); // true or false
dayjs('2024-09-19').isAfter(dayjs()); // true or false
  • Verify if two dates are identical:
dayjs('2024-09-19').isSame('2024-09-19'); // true

These methods are essential for validating time-sensitive conditions.

6. Calculating Date Differences

Need to measure time spans? Day.js has you covered:

  • Calculate differences in years, days, or other units:
dayjs('2024-09-19').diff(dayjs('2023-09-19'), 'year'); // 1
dayjs('2024-09-19').diff(dayjs(), 'day'); // Number of days

This makes Day.js perfect for duration calculations.

7. Working with Time

Access individual time components:

  • Get the current hour: dayjs().hour()
  • Get the current minute: dayjs().minute()
  • Get the current second: dayjs().second()

This granularity is ideal for real-time applications.

8. Extracting Date Parts

Breaking down a date is simple:

  • Year: dayjs().year() // 2024
  • Month: dayjs().month() // 8 (September, 0-indexed)
  • Day of the month: dayjs().date() // 19

Day.js helps disassemble a date for detailed analysis.

9. Handling UTC Dates

Timezones can be challenging, but Day.js supports UTC manipulation:

  • Current UTC date: dayjs().utc().format()
  • Set a specific UTC offset: dayjs().utcOffset(0).format()

This ensures consistency across global applications.

10. Durations and Time Between Dates

Day.js offers robust duration handling:

  • 1-day duration: dayjs.duration(1, 'day')
  • Convert 2 hours to minutes:
dayjs.duration(2, 'hours').asMinutes(); // 120 minutes

This simplifies working with time intervals.

11. Relative Time

Expressing dates relatively is intuitive:

dayjs().to('2024-09-19'); // in 1 day
dayjs().from('2023-09-19'); // 1 year ago

Relative time makes dynamic date displays easier to manage.

Additional Tips and Considerations

Localization

Day.js supports multiple languages out of the box. Import the required locale:

const dayjs = require('dayjs');
const locale = require('dayjs/locale/fr'); // French
dayjs.locale('fr');
console.log(dayjs().format('dddd, MMMM D, YYYY')); // Displays in French

Custom Plugins

Enhance functionality using plugins:

  • duration: For advanced time manipulation.
  • advancedFormat: For complex date formatting.
  • Install plugins:
const relativeTime = require('dayjs/plugin/relativeTime');
dayjs.extend(relativeTime);

Performance

Day.js is lightweight (2kB) and immutable, making it ideal for high-performance applications without the bulk of larger libraries.

Finally

Day.js is a powerful, lightweight alternative for handling dates and times in JavaScript. Its intuitive API, rich plugin ecosystem, and flexibility make it a must-have tool for any developer. With the tips and methods shared in this guide, you’re now equipped to handle all your date-related challenges effectively.

Support Us