はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【JavaScript】Node.jsライブラリであるdate-fnsを用いて時刻を扱う

はじめに

今回はdate-fnsの基本的な使い方について紹介したいと思います。

date-fns provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.

// DeepL翻訳
date-fnsは、ブラウザとNode.jsでJavaScriptの日付を操作するための最も包括的で、かつシンプルで一貫したツールセットを提供します。

date-fns.org

インストール

npm install date-fns --save

使い方

日付の出力

import { format } from 'date-fns'

// 日の取得
// 2
console.log(new Date(2022, 1, 2).getDate())

// 月の取得
// 1
console.log(new Date(2022, 1, 2).getMonth())

// 年の取得
// 2022
console.log(new Date(2022, 1, 2).getFullYear())

// 2023-05-20
console.log(format(Date.now(), 'yyyy-MM-dd'))

// 2023-05-20 19:30:39
console.log(format(Date.now(), 'yyyy-MM-dd HH:mm:ss'))

時間を進める・戻す

import { addYears, addMonths, addWeeks, addDays, subYears, subMonths, subWeeks, subDays } from 'date-fns'

// 年の加算
// Mon May 20 2024 19:32:21 GMT+0900 (日本標準時)
console.log(addYears(Date.now(), 1))

// 月の加算
// Tue Jun 20 2023 19:32:21 GMT+0900 (日本標準時)
console.log(addMonths(Date.now(), 1))

// 週の加算
// Sat May 27 2023 19:32:21 GMT+0900 (日本標準時)
console.log(addWeeks(Date.now(), 1))

// 日の加算
// Sun May 21 2023 19:32:21 GMT+0900 (日本標準時)
console.log(addDays(Date.now(), 1))

// 年の減算
// Fri May 20 2022 19:32:21 GMT+0900 (日本標準時)
console.log(subYears(Date.now(), 1))

// 月の減算
// Thu Apr 20 2023 19:32:21 GMT+0900 (日本標準時)
console.log(subMonths(Date.now(), 1))

// 週の減算
// Sat May 13 2023 19:32:21 GMT+0900 (日本標準時)
console.log(subWeeks(Date.now(), 1))

// 日の減算
// Fri May 19 2023 19:32:21 GMT+0900 (日本標準時)
console.log(subDays(Date.now(), 1))

判定

import { addDays, subDays, isAfter, isSameDay, isBefore } from 'date-fns'

// 昔かどうか (第一引数が第二引数と比べて)
// true
console.log(isBefore(Date.now(), addDays(Date.now(), 1)))
// false
console.log(isBefore(Date.now(), subDays(Date.now(), 1)))

// 未来かどうか (第一引数が第二引数と比べて)
// false
console.log(isAfter(Date.now(), addDays(Date.now(), 1)))
// true
console.log(isAfter(Date.now(), subDays(Date.now(), 1)))

// 同じ日付か
// true
console.log(isSameDay(Date.now(), Date.now()))
// false
console.log(isSameDay(Date.now(), addDays(Date.now(), 1)))