JavaScript

レシピ

日付・時間

指定した日時からタイムスタンプを取得する

指定した日時でDateオブジェクトのインスタンスを作成して、タイムスタンプを作成する方法について解説します。

この記事のポイント

  • 指定した日時でDateオブジェクトのインスタンスを作成する
  • 時間の表記に日本語が含まれる場合は表記の変換が必要

目次

指定した日時のタイムスタンプを取得する

Dateオブジェクトはインスタンスを作成するときにパラメータを渡すと、指定した日時のインスタンスを作成することができます。
パラメータには日付の文字列か、または年月日時分秒を数値で渡すことができます。
インスタンスを作成した後はgetTimeメソッドでタイムスタンプを取得することができるようになります。

以上のことを整理すると、指定した日時のタイムスタンプを取得するまでの手順は次のようになります。

  1. 1. 時間を指定してDateオブジェクトのインスタンスを作成
  2. 2. インスタンスからgetTimeメソッドを使ってタイムスタンプ取得

この順番を踏まえて、以下の例ではそれぞれのパターンごとに日時を指定してDateオブジェクトのインスタンスを作成し、getTimeメソッドでタイムスタンプを取得して出力します。

コード例

// パターン1:yyyy-mm-ddThh:mm:ss
var date = new Date('2001-04-01T18:42:30');
console.log(date.getTime()); // 986118150000

// パターン2:yyyy-mm-dd
var date = new Date('2002-04-01');
console.log(date.getTime()); // 1017619200000

// パターン3:yyyy-mm-dd hh:mm:ss
var date = new Date('2003-04-01 15:59:59');
console.log(date.getTime()); // 1049180399000

// パターン4:yyyy/mm/dd
var date = new Date('2004/05/01');
console.log(date.getTime()); // 1083337200000

// パターン5:yyyy/mm/dd hh:mm:ss
var date = new Date('2005/05/01 08:25:34');
console.log(date.getTime()); // 1114903534000

// パターン6:Month d, yyyy hh:mm:ss
var date = new Date('July 1, 2006 07:15:30');
console.log(date.getTime()); // 1151705730000

// パターン7:yyyy年mm月dd日
var date = new Date('2007年5月29日');
console.log(date.getTime()); // NaN

// パターン8:yyyy年mm月dd日 hh時mm分ss秒
var date = new Date('2008年5月29日 19時49分46秒');
console.log(date.getTime()); // NaN

// パターン9:yyyy,mm,dd
var date = new Date(2009,2,14);
console.log(date.getTime()); // 1236956400000

// パターン10:yyyy,mm,dd,hh,mm,ss
var date = new Date(2010,2,14,23,30,45);
console.log(date.getTime()); // 1268577045000

パターン7、パターン8は時間の表記に日本語を含むためうまくいきませんが、それ以外のパターンは全て指定した時間でDateオブジェクトのインスタンスを作成することができました。
インスタンスを作成できればgetTimeメソッドを使うことができるので、いつでもタイムスタンプを取得できる状態になります。

日本語表記を置き換えてタイムスタンプを取得する

先ほど日本語が含まれていてタイムスタンプを取得できなかったパターン7とパターン8について、時間の文字列に含まれる日本語を置き換えてタイムスタンプを取得できるようにしていきます。

「2020年8月1日」など日本語の表記を「2020/8/1」のように置き換えるための、シンプルな変換用の関数を用意して対応します。
ここでは例としてreplaceTimeString関数という名前で、次のようなコードで用意します。

日本語を変換するreplaceTimeString関数

function replaceTimeString(time_string) {
  var res = null;

  res = time_string.replace( /[年|月]/g, '/');
  res = res.replace( /[時|分]/g, ':');
  res = res.replace( /[日|秒]/g, '');

  return res;
}

replaceTimeString関数は引数として受け取った文字列からreplaceメソッドを使って日本語の表記を置き換えます。
この関数が実行されると、渡された文字列が「2020年1月1日」であれば「2020/1/1」のようになり、時分秒を含む「2020年10月8日 10時30分00秒」のような文字列なら「2020/10/8 10:30:00」に置き換わります。

以上のように日本語の表記を置き換えることを前提として、先ほどのパターン7とパターン8を修正すると次のようになります。

日本語を変換するreplaceTimeString関数

// パターン7:yyyy年mm月dd日
var time_string = replaceTimeString('2007年5月29日');
var date = new Date(time_string);
console.log(date.getTime()); // 1180364400000

// パターン8:yyyy年mm月dd日
var time_string = replaceTimeString('2008年5月29日 19時49分46秒');
var date = new c(time_string);
console.log(date.getTime()); // 1212058186000

replaceTimeString関数で置き換えた文字列を変数time_stringに入れ、その日付文字列を「new Date」のパラメータに渡すことでインスタンスを作成します。
このインスタンスからgetTimeメソッドを呼び出すと、他のパターンと同様にタイムスタンプを取得することができます。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。