- Moment.js は、クリーンかつ強力な API を使用して、JavaScript での日付と時刻の管理を簡素化します。
- 任意の形式とタイムゾーンで日付を分析、操作、検証、表示できます。
- プロジェクトに簡単に統合でき、IronPDF などの外部プラグインやライブラリと互換性があります。

JavaScriptで日付や時刻を扱うのは、Web開発者にとって大きな課題となることがあります。幸いなことに、Moment.jsのようなツールを使えば、このプロセスが大幅に簡素化され、基本的な日付フォーマットから複雑な操作や検証まで、あらゆる処理がはるかに簡単になります。プロジェクトで日付の変換、比較、表示に苦労した経験があるなら、Moment.jsはきっとあなたの頼れる味方だったはずです。少なくとも、一度は使ってみるべきでしょう。
この記事では、Moment.jsについて知っておくべきことをすべてお伝えします。主要な機能やあまり知られていないテクニックから、実用的な例、他のライブラリとの連携方法、構文の明確な説明、そしてMoment.jsで実現できるタスクまで、幅広く解説します。また、Moment.jsの制限事項、最近のアップデート、そしてよりモダンなライブラリをお探しの場合の代替案についても見ていきます。
Moment.js とは何ですか? なぜこれほど人気になったのですか?
Moment.jsは、日付と時刻の操作を容易にするために設計されたJavaScriptライブラリです。シンプルながら強力な構文で、ほぼあらゆる形式の日付を作成、解析、操作、表示できます。長年にわたり、このライブラリはJavaScriptのネイティブなDate()オブジェクトの制限を克服するための主要なソリューションとしてコミュニティで広く利用されてきました。
Moment.jsの中核を成すのは`moment()`オブジェクトです。このオブジェクトは、テキスト文字列、Dateオブジェクト、タイムスタンプ、あるいは数値引数など、ほぼあらゆる有効な入力から日付を構築できます。そのため、小規模なスクリプトから、国際タイムゾーンや履歴記録を管理するエンタープライズアプリケーションまで、あらゆる種類のプロジェクトで非常に柔軟かつ有用です。
Moment.jsがこれほど成功した理由は?その信頼性、使いやすさ、そして豊富な付属ツールとプラグインにあります。プロジェクトがメンテナンスモードに入ってからも、Moment.jsは多くのユーザーと充実したドキュメントを維持しており、JavaScriptとNode.jsにおける主要なデータソリューションとしての地位を確固たるものにしています。
Moment.jsの主な機能と利点
- シンプルで直感的なAPIMoment.js の最大の強みの一つは、その明確な構文です。現在の日付の取得や文字列を特定形式に変換するといった単純な操作から、複雑な計算や検証まで、わずか数行で実行できます。
- 柔軟な解析とフォーマットほぼあらゆる形式の日付文字列を解析し、目的の出力に変換することがこれまでになく簡単になりました。 Moment.js を使用すると、カスタム プレゼンテーションで日付をすばやく簡単にフォーマットできます。.
- 日付操作日、月、年、週、その他の時間単位を加算または減算するのは、メソッドを使用するのと同じくらい簡単です。 add() y subtract()これは、相対的な日付、期日、または動的に変化する期間を操作する必要がある場合に非常に便利です。
- 堅牢な検証日付が有効か存在するかを確認する必要がある場合(例えば30月XNUMX日)、Moment.jsを使えば簡単にできます。 isValid() 日付の形式やロジックにおける微妙なエラーを検出できます。
- タイムゾーンとローカリゼーションのサポート: プラグインのおかげで 瞬間タイムゾーン異なるタイムゾーン間で日付を変換するのは非常に簡単です。また、ユーザーの言語や地域の慣習に合わせて日付を表示することもできます。これは、グローバルアプリケーションでは重要です。
- プラグインエコシステムメインライブラリとは別に、機能を拡張するためのプラグインのエコシステムがあります (カレンダー、他のフレームワークとの互換性、エキゾチックな形式など)。
プロジェクトでMoment.jsを使い始める方法
インストールは非常に簡単です。Moment.jsをHTMLにたった1行追加するだけで組み込むことができます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
Node.js または最新の開発環境で作業している場合は、npm または yarn を使用してインストールするのが一般的です。
npm install moment
これが完了したら、使用する構文に従って Moment.js をインポートできます。
// Versión CommonJS
var moment = require('moment');
moment().format();
// ES6
import moment from 'moment';
moment().format();
日付の作成:さまざまな方法と実例
簡単に日付を作成
現在の日付と時刻を取得するには、 単に使用 moment():
console.log(moment()); // Devuelve la fecha actual en formato ISO8601
引数を渡すことで特定の日付を構築できます。
moment("2022-10-14"); // Crea el 14 de octubre de 2022
厳密モードであっても、指定された文字列と形式から開始することもできます。
moment("25/12/1995", "DD/MM/YYYY", true); // Analiza y comprueba el formato
ネイティブの Date オブジェクトはありますか?
const fechaJS = new Date();
const miFecha = moment(fechaJS);
日付の書式設定と表示
Moment.js を使用すると、日付をあらゆる形式で表示できます。たとえば、現在の日付を日/月/年の形式で表示するには、次のようにします。
moment().format('DD/MM/YYYY');
より人間味のあるチェーンが必要な場合は、以下を使用できます。
moment().format('MMMM Do YYYY, h:mm:ss a'); // Ejemplo: "marzo 8º 2024, 3:21:10 pm"
書式設定に役立つトークン:
YYYY: 4桁の年MM: ぼくのDD: 月の日付hhoHH: 時間(12時間または24時間形式)mm: 分ss: 秒a: 午前/午後
たとえば、時間だけを表示するには次のようにします。
moment().format('HH:mm:ss');
トークンと地域サポートによる高度なフォーマット
Moment.jsは、複数のローカライズされたフォーマットと翻訳をサポートしています。月名や曜日名を別の言語で表示するなど、言語を動的に切り替えることが可能です。
moment.locale('es'); // Cambia a español
document.write(moment().format('LLLL'));
// Ejemplo: martes, 8 de marzo de 2024 15:21
日付操作: 加算、減算、比較
相対日付の操作は Moment.js の強みの 1 つです。
- 日、月、年を追加する:
moment().add(3, 'days').format('DD/MM/YYYY'); - 単位を減算する:
moment().subtract(2, 'months').format('DD/MM/YYYY'); - 生理の開始と終了:
moment().startOf('month').format('DD/MM/YYYY'); // Primer día del mes moment().endOf('month').format('DD/MM/YYYY'); // Último día del mes
日付を検証し、エラーを検出する
日付を操作する前に、日付が正しいことを検証することが重要です。
moment('2024-02-30', 'YYYY-MM-DD').isValid(); // false, el 30 de febrero no existe
これにより、ユーザーから日付を受け取るアプリケーションにおける予期せぬバグを防ぐことができます。
日付の比較: 日付が他の日付と一致するかどうかを確認します
Moment.js には日付を比較するためのいくつかのメソッドが含まれています。
- isBefore(): ある日付が別の日付より前かどうかを確認します。
- isAfter(): 日付が後かどうかを確認します。
- isBetween(): 日付が 2 つの指定された日付の間にあるかどうかを示します。
let hoy = moment();
let ayer = moment().subtract(1, 'days');
console.log(hoy.isAfter(ayer)); // true
タイムゾーンと国際日付の取り扱い
世界各地のユーザーとやり取りする際、タイムゾーンは大きな悩みの種となることがあります。moment -timezoneプラグインを使えば、地域間の日付変換を簡単に行うことができます。
const moment = require('moment-timezone');
const fechaUTC = moment('2024-05-25');
const fechaNY = fechaUTC.tz('America/New_York').format('YYYY-MM-DD HH:mm:ss');
console.log(fechaNY);
// Ejemplo: "2024-05-24 20:00:00"
さらに、Moment.jsはユーザーの地域設定に合わせて日付を表示することができ、月と日の名前を正しく翻訳して表示します。
主な使用例と高度なヒント
日付の差を取得する
2 つの日付間の経過時間を異なる単位で計算できます。
let inicio = moment('2024-01-01');
let fin = moment('2024-03-08');
let dias = fin.diff(inicio, 'days'); // Devuelve el número de días entre ambas
相対的な日付と人間の時間
Moment.js は、「3 日前」や「5 時間後」などのメッセージを表示するのに最適です。
moment().subtract(3, 'days').fromNow(); // "hace 3 días"
moment().add(2, 'hours').fromNow(); // "en 2 horas"
人間の暦
calendar ()関数は、「昨日の午後5時」、「明日の午前9時」といった相対的な日付を表示するため、カレンダーアプリで非常に便利です。
moment().subtract(1, 'days').calendar(); // "Ayer a las..."
moment().add(3, 'days').calendar(); // "Próximo martes a las..."
年送りや特別な日のサポート
その年がうるう年かどうかを知りたいですか?
moment([2024]).isLeapYear(); // true
isLeapYear()メソッドを使えば、答えが直接得られます。
高度なカスタマイズ: フォーマット、トークン、厳密な解析
Moment.js を使用すると、カスタム文字列やトークンを操作して、無数の形式で日付を作成または読み取ることができます。さらに、厳密モードでは完全一致が求められるため、微妙なエラーや予期せぬ事態を防ぐことができます。
たとえば、「日/月/年」の形式で日付を解析するには、次のようにします。
moment('12/03/2023', 'DD/MM/YYYY', true);
一般的なトークンと例のリスト
- 年: YYYY (2024)、YY (24)、Y (-500)
- MES: MM (01 – 12)、MMM (XNUMX月)、MMMM (XNUMX月)
- ディア: DD(01~31)、C(1日~31日)
- 時間: HH (00 – 23)、hh (01 – 12)、mm (分)、ss (秒)
- タイムゾーン: Z、ZZ
これらのトークンを組み合わせることで、完全にカスタマイズされた出力を作成できます。完全なリストと特殊なケースについては、ドキュメントをご覧ください。