今すぐJavaScriptの日付–JavaScriptで現在の日付を取得する方法

構築する多くのアプリケーションには、リソースの作成日であろうと、アクティビティのタイムスタンプであろうと、ある種の日付コンポーネントがあります。

日付とタイムスタンプのフォーマットを処理するのは大変です。このガイドでは、JavaScriptでさまざまな形式で現在の日付を取得する方法を学習します。

JavaScriptの日付オブジェクト

JavaScriptにはDate、日付と時刻を格納し、それらを処理するためのメソッドを提供する組み込みオブジェクトがあります。

Dateオブジェクトの新しいインスタンスを作成するには、次のnewキーワードを使用します。

const date = new Date();

Dateオブジェクトが含まれているNumber1970年1月1日であるエポック、経過ミリ秒を表しています。

Dateコンストラクターに日付文字列を渡して、指定した日付のオブジェクトを作成できます。

const date = new Date('Jul 12 2011');

現在の年を取得するにgetFullYear()は、Dateオブジェクトのインスタンスメソッドを使用します。このgetFullYear()メソッドは、Dateコンストラクターで指定された日付の年を返します。

const currentYear = date.getFullYear(); console.log(currentYear); //2020

同様に、現在の日付と現在の月を取得する方法があります。

const today = date.getDate(); const currentMonth = date.getMonth() + 1; 

このgetDate()メソッドは、月の現在の日(1-31)を返します。

このgetMonth()メソッドは、指定された日付の月を返します。このgetMonth()メソッドについて注意すべき点の1つは、0のインデックス値(0〜11)を返すことです。ここで、0は1月、11は12月です。したがって、1を加算して、月の値を正規化します。

今の日付

now()Dateオブジェクトの静的メソッドです。エポックからの経過時間を表す値をミリ秒単位で返します。now()メソッドから返されたミリ秒をDateコンストラクターに渡して、新しいDateオブジェクトをインスタンス化できます。

const timeElapsed = Date.now(); const today = new Date(timeElapsed);

日付のフォーマット

Dateオブジェクトのメソッドを使用して、日付を複数の形式(GMT、ISOなど)にフォーマットできます。

このtoDateString()メソッドは、人間が読める形式で日付を返します。

today.toDateString(); // "Sun Jun 14 2020"

このtoISOString()メソッドは、ISO8601拡張形式に従う日付を返します。

today.toISOString(); // "2020-06-13T18:30:00.000Z"

このtoUTCString()メソッドは、UTCタイムゾーン形式で日付を返します。

today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"

このtoLocaleDateString()メソッドは、地域に依存する形式で日付を返します。

today.toLocaleDateString(); // "6/14/2020"

Dateメソッドの完全なリファレンスは、MDNドキュメントにあります。

カスタム日付フォーマッタ関数

上記のセクションで説明した形式とは別に、アプリケーションのデータ形式が異なる場合があります。それはyy/dd/mmyyyy-dd-mmフォーマット、または同様のものである可能性があります。

この問題に取り組むには、再利用可能な関数を作成して、複数のプロジェクトで使用できるようにすることをお勧めします。

したがって、このセクションでは、関数の引数で指定された形式で日付を返すユーティリティ関数を作成しましょう。

const today = new Date(); function formatDate(date, format) { // } formatDate(today, 'mm/dd/yy');

文字列「mm」、「dd」、「yy」を、引数で渡されたフォーマット文字列のそれぞれの月、日、年の値に置き換える必要があります。

これを行うには、replace()以下に示すような方法を使用できます。

format.replace('mm', date.getMonth() + 1);

しかし、これは多くのメソッドチェーンにつながり、関数をより柔軟にしようとすると維持が困難になります。

format.replace('mm', date.getMonth() + 1) .replace('yy', date.getFullYear()) .replace('dd', date.getDate());

メソッドを連鎖させる代わりに、メソッドで正規表現を利用できますreplace()

まず、部分文字列とそれぞれの値のキーと値のペアを表すオブジェクトを作成します。

const formatMap = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() };

次に、正規表現を使用して文字列を照合および置換します。

formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);

完全な関数は次のようになります。

function formatDate(date, format) { const map = { mm: date.getMonth() + 1, dd: date.getDate(), yy: date.getFullYear().toString().slice(-2), yyyy: date.getFullYear() } return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]) }

関数にタイムスタンプをフォーマットする機能を追加することもできます。

結論

DateJavaScriptのオブジェクトについて理解を深めていただければ幸いです。datesjやなどの他のサードパーティライブラリを使用momentして、アプリケーションで日付を処理することもできます。

次回まで、安全を確保し、いかさまを続けてください。