JavaScriptで日付を処理するための優れたライブラリがいくつかあり、Moment.jsdate-fnsがおそらく最も人気のある2つです。 ただし、日付を操作するための基本的なニーズがいくつかあり、ネイティブのJavaScript日付オブジェクトの代わりにライブラリを使用するのはやり過ぎです。 したがって、dateオブジェクトを使用してネイティブに実行できることを調べてみましょう。

日付オブジェクトの作成

新しい日付インスタンスの作成は、日付オブジェクトを更新するのと同じくらい簡単です。

引数がない場合、ローカルタイムゾーンの現在の日付と時刻を取得します。

const now = new Date();

console.log(now); // Wed Dec 06 2017 18:30:55 GMT-0800 (PST)

Unixエポックからのミリ秒

1970年1月1日UTCからXミリ秒後の日付オブジェクトの整数を渡すこともできます。

const latter = new Date(4000000000);

console.log(latter); // Sun Feb 15 1970 23:06:40 GMT-0800 (PST)

日付文字列

または、文字列を渡して日付オブジェクトを作成することもできます。

const summerOf95 = new Date("1995-06-28");

// or, with a full date string that also includes the time and the time zone. Note here that `Z` is for UTC timezone:
const december31st = new Date("1999-12-31T02:56:03.392Z");

日付コンポーネント

最後に、個別のコンポーネント引数を使用して、ローカルタイムゾーンに日付オブジェクトを作成できます。

const someDate = new Date(2000, 5, 20, 16, 34, 12, 24);

console.log(someDate); // Tue Jun 20 2000 16:34:12 GMT-0700 (PDT)

月がゼロベースであり、 5 したがって、6月を表します。 時間の構成要素は省略でき、 0 想定されます:

const someDate = new Date(2000, 5, 20, 16, null, 12, 24);

console.log(someDate); // Tue Jun 20 2000 16:00:12 GMT-0700 (PDT)

コンソールが日付オブジェクトをログに記録するときに返される日付に混乱している場合は、ほとんどのブラウザがローカルタイムゾーンで時刻を出力することに注意してください。

タイムスタンプ

日付インスタンスのgetTimeメソッドを使用して、タイムスタンプ(1970年1月1日UTCからのミリ秒数)を取得します。

const nowTimestamp = new Date().getTime();

console.log(nowTimestamp); // 1512616153783

今のところタイムスタンプ

上記の例では、次のタイムスタンプを取得しています now. これは非常に一般的であるため、JavaScriptには、これをより簡単に取得するためのメソッドがあります。

const nowTimestamp = Date.now();

console.log(nowTimestamp); // 1512616153783

タイムスタンプは、2つの日付間のミリ秒単位の差を簡単に計算するのに役立ちます。 たとえば、ここでは、1996年2月3日と1970年1月1日のミリ秒単位の差を取得します。

const diff = new Date("1995-02-03").getTime() - new Date(0).getTime();

上記の場合、 getTime の呼び出しを省略でき、日付は自動的にタイムスタンプに強制されます。

const diff = new Date("1995-02-03") - new Date(0);

人間が読める形式の文字列

日付オブジェクトインスタンスは、人間にわかりやすい文字列表現を取得するためのいくつかの便利なメソッドも提供します。 toDateString toTimeString toLocaleDateString toLocaleString toLocaleTimeString 、およびtoUTCStringメソッドは次のとおりです。最も有用なものであり、次の例で示されています。

const now = new Date();

console.log(now.toDateString()); // Wed Dec 06 2017
console.log(now.toTimeString()); // 19:23:42 GMT-0800 (PST)
console.log(now.toLocaleDateString()); // 12/6/2017
console.log(now.toLocaleString()); // 12/6/2017, 7:20:28 PM
console.log(now.toLocaleTimeString()); // 7:20:51 PM
console.log(now.toUTCString()); // Thu, 07 Dec 2017 03:21:14 GMT

日付または時刻コンポーネントの取得

次の方法を使用して、日付インスタンスから特定の日付/時刻コンポーネントを取得できます。

  • getFullYear():年。4桁を使用します。
  • getDate():月の日(例:31)。
  • getMonth():月のゼロベースの整数(例:1月の場合は0)。
  • getDay():日曜日の0から土曜日の6までの曜日のインデックス。
  • getHours():その日の時間。
  • getMinutes():分。
  • getSeconds():秒。
  • getMilliseconds():ミリ秒。

簡単な例を次に示します。

const now = new Date();

console.log(`It's ${now.getHours()}:${now.getMinutes()} o'clock`);
// It's 19:34 O'Clock

上記のすべてのメソッドは、ローカルタイムゾーンの日付/時刻コンポーネントを返すことに注意してください。 各メソッドには同等のものがあるため、代わりにUTC日付/時刻が返されます(例: getUTCMinutes())。

日付または時刻コンポーネントの設定

日付/時刻コンポーネントを取得する方法と同様に、類似の方法を使用してそれらを設定することもできます。

const now = new Date();

now.setFullYear(2049);

console.log(now.toLocaleString()); // 12/6/2049, 7:40:04 PM

ほとんどのsetメソッドが他のコンポーネントを設定するために複数の引数を取ることができるショートカットがあることに注意してください。 これらの2つのスニペットは、同じ結果を生成します。

退屈な方法
const now = new Date();


ショートカット
const now = new Date();


時間の加算/減算

getメソッドとsetメソッドを組み合わせて使用すると、日付インスタンスの日付/時刻コンポーネントに加算または減算できます。 たとえば、現在の時刻に15分を追加します。

const now = new Date();

console.log(now.toLocaleTimeString()); // 7:47:53 PM

now.setMinutes(now.getMinutes() + 15);

console.log(now.toLocaleTimeString()); // 8:02:53 PM