date-fnsでRFC 7231形式の日付を簡単にフォーマットする方法


"date-fns"ライブラリは、JavaScriptにおける日付操作を簡素化するためのものです。その"Common Helpers"機能には、formatRFC7231という関数が含まれており、日付をRFC 7231形式でフォーマットすることができます。

RFC 7231形式とは

RFC 7231形式は、HTTPにおける日付と時刻の表現方法を規定したものです。以下の形式で構成されます。

Sun, 06 Sep 2020 08:20:50 GMT
  • タイムゾーン
  • 時刻
  • 日付
  • 曜日

formatRFC7231の使い方

formatRFC7231関数は、以下の引数を取ります。

  • options: オプションオブジェクト (省略可)
  • date: フォーマット対象の日付オブジェクト

オプションオブジェクトには、以下のプロパティを設定することができます。

  • includeSeconds: 秒を含めるかどうか (省略可)
  • weekday: 曜日の表記形式 (省略可)
  • locale: ロケール (省略可)

例:

import { formatRFC7231 } from 'date-fns';

const date = new Date(2020, 8, 6, 8, 20, 50);
const formattedDate = formatRFC7231(date);
console.log(formattedDate); // Sun, 06 Sep 2020 08:20:50 GMT
  • formatRFC7231関数を使用することで、日付を簡単にRFC 7231形式でフォーマットすることができます。
  • RFC 7231形式は、HTTPにおける標準的な日付表現形式なので、様々なライブラリやサービスとの互換性が高いです。


基本的な使い方

import { formatRFC7231 } from 'date-fns';

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate = formatRFC7231(date);
console.log(formattedDate); // Thu, 23 May 2024 21:27:00 GMT

オプションの使用

import { formatRFC7231 } from 'date-fns';

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate = formatRFC7231(date, { locale: 'ja' });
console.log(formattedDate); // 木, 2024年5月24日 21:27:00 GMT

曜日の表記形式の指定

import { formatRFC7231 } from 'date-fns';

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate = formatRFC7231(date, { weekday: 'short' });
console.log(formattedDate); // Thu, 23 May 2024 21:27:00 GMT
import { formatRFC7231 } from 'date-fns';

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate = formatRFC7231(date, { includeSeconds: false });
console.log(formattedDate); // Thu, 23 May 2024 21:27 GMT
import { formatRFC7231 } from 'date-fns';

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate = formatRFC7231(date, {
  locale: 'ja',
  weekday: 'short',
  includeSeconds: false
});
console.log(formattedDate); // 木, 2024年5月24日 21:27 GMT


JavaScript の組み込み関数を使用する

JavaScript には、Date オブジェクトの toString() メソッドや toLocaleString() メソッドを使用して、日付をフォーマットする機能があります。

const date = new Date(2024, 5, 23, 21, 27, 0);
const formattedDate1 = date.toString(); // Thu May 23 2024 21:27:00 GMT-0700 (太平洋夏時間)
const formattedDate2 = date.toLocaleString(); // 2024年5月24日 21時27分00秒

これらの方法は、formatRFC7231 関数よりもシンプルですが、RFC 7231 形式に完全に準拠していない場合があります。

date-fns 以外にも、日付操作ライブラリは多数存在します。これらのライブラリの中には、formatRFC7231 関数と同様の機能を提供するものもあります。

これらのライブラリは、date-fns よりも多くの機能を提供している場合が多く、より複雑な日付操作にも対応できます。

手動でフォーマットする

日付を RFC 7231 形式で手動でフォーマットすることも可能です。

const date = new Date(2024, 5, 23, 21, 27, 0);

const weekday = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()];
const month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][date.getMonth()];
const day = date.getDate().toString().padStart(2, '0');
const hour = date.getHours().toString().padStart(2, '0');
const minute = date.getMinutes().toString().padStart(2, '0');
const second = date.getSeconds().toString().padStart(2, '0');
const timezone = 'GMT';

const formattedDate = `${weekday}, ${day} ${month} ${date.getFullYear()} ${hour}:${minute}:${second} ${timezone}`;
console.log(formattedDate); // Thu, 23 May 2024 21:27:00 GMT

この方法は、最も柔軟性がありますが、複雑でエラーが発生しやすいという欠点があります。

formatRFC7231 関数は、日付を RFC 7231 形式でフォーマットする最も簡単な方法です。しかし、状況によっては、他の方法の方が適している場合があります。