JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

エポックタイムスタンプをJavaScriptで意味のある日付に変換する方法

JavaScriptのDateオブジェクトは、1970年1月1日00:00:00 UTC(エポック)からの経過ミリ秒数を基準として日時を管理しています。そのため、APIなどから /Date(1514789449605)/ のような形式のエポックタイムスタンプを受け取った場合でも、new Date() コンストラクタに数値を渡すだけで、人間が読める形式の日付へ簡単に変換できます。

ここでは、エポック時間(ミリ秒)が 1514789449605 の場合を例に、意味のあるJavaScriptの日付へ変換する手順を解説します。

サンプルコード

<html>
   <head>
      <title>JavaScript Dates</title>
   </head>
   <body>
      <script>
         // "/Date(...)" 形式の文字列から数値部分を取り出す
         var val = "/Date(1514789449605)/";
         var myDate = new Date(parseFloat(val.substr(6)));

         document.write("Converted Date:" + (myDate.getMonth() + 1) + "/" +
            myDate.getDate() + "/" + myDate.getFullYear() + " " +
            myDate.getHours() + ":" + myDate.getMinutes() + ":" +
            myDate.getSeconds()
         );
      </script>
   </body>
</html>

実行結果

Converted Date:1/1/2018 12:20:49

コードのポイント

  • substr(6) によって、先頭の /Date( を取り除き、数値部分だけを抽出しています。
  • parseFloat() で抽出した文字列を数値(ミリ秒)に変換します。
  • new Date(ミリ秒) に渡すことで、対応する日時を持つ Date オブジェクトが生成されます。
  • getMonth() の戻り値は 0始まり(1月が0)なので、表示時には +1 が必要です。

よりシンプルな書き方

正規表現や slice() を使えば、文字列の加工をより簡潔に記述できます。

var val = "/Date(1514789449605)/";
var myDate = new Date(parseInt(val.replace(/[^0-9]/g, ""), 10));
console.log(myDate.toLocaleString()); // 環境のロケールに合わせた表示

このように、エポックからのミリ秒数さえ取り出せれば、あとは Date オブジェクトの各メソッド(getFullYear()getMonth()getDate() など)や toLocaleString() を活用することで、用途に応じた読みやすい日付文字列を自由に組み立てられます。

  1. JavaScriptで日付を比較する方法|サンプルコード付きでわかりやすく解説

    JavaScriptでは、Dateオブジェクトを使うことで日付を簡単に比較できます。比較対象となる日付は、過去・現在・未来のいずれであっても問題ありません。たとえば、過去の日付と未来の日付を比べたり、未来の日付と今日の日付を比べたりすることも可能です。日付比較の仕組みDateオブジェクト同士を「>」や「<」といった比較演算子で比べると、それぞれの日付は自動的に「1970年1月1日00:00:00 UTCからの経過ミリ秒」に変換され、数値として比較されます。そのため、開発者が特別な変換処理を書く必要はありません。なお、「==」や「===」による等価比較の場合は注意が必要です。Date

  2. JavaScriptで日付オブジェクトの内容をJSON形式に変換する方法

    date.toJSON()メソッドとはdate.toJSON()は、JavaScriptに組み込まれている関数の一つで、指定した日付オブジェクトの内容を文字列に変換するために使用されます。日付オブジェクトはDate()コンストラクターによって生成されます。このメソッドが返す文字列は、ISO 8601形式(UTC基準)で表現されるため、JSONデータとして扱う際に非常に便利です。構文dateObj.toJSON();このメソッドは引数(パラメーター)を一切受け取りません。生成済みの日付オブジェクトに対して呼び出すだけで、Date()コンストラクターの内容が変換された文字列が返されます。例1:単一