JavaScriptのmomentでエポックミリ秒を取得する
エポックミリ秒とは、UNIX エポックからの経過ミリ秒数のことです。
最近は「エポック秒(10桁)」よりも「ミリ秒(13桁)」を使う機会が増えてきたように感じています。
それは、Google や Apple をはじめとする主要な API のレスポンスの日付項目がエポックミリ秒であることです。
よって、MySQL でも DateTime(3) のように、ミリ秒まで扱えるカラムを設けることも多くなりました。
いろいろな言語を触る場面で、このエポックミリ秒を使う機会があるのですが、今回は JavaScript で簡単に取得できる方法を紹介します。
また、最近よく日付操作で利用されている moment のライブラリを使用していきます。
「エポックミリ秒」から「日時」への変換ツールも作ってみましたので、興味のある方は使ってみてください。
Dateを使う
今回は moment を利用する前提ですが、先に 1 点、補足しておきたいと思います。
実は、Date を使えば簡単にエポックミリ秒を算出することができます。
var ms = Date.now()
console.log("ms: " + ms)
結果は以下の通りです。
ms: 1577547893566
もちろん、これで済むならこの記事はここで終了となりますが、プロジェクトによっては「日付操作は moment で統一して」と言われるケースもあるでしょう。
面倒だなっと思うこともありますが、その気持ちはわからなくありません。
momentのライブラリを使用する
では、同様の操作を moment を利用して試してみます。
既にライブラリをロードしている場合はそのままロジックを見てもらえればと思いますが、まだの方はライブラリの読み込みからですね。
公式サイトで最新バージョンを確認してダウンロードしてみましょう。
(2019年12月末時点の最新バージョンは 2.24.0 でした)
Parse, validate, manipulate, and display dates and times in JavaScript.
Moment.js 2.24.0
自分のサイト内に設置する必要がない方は、CDN で提供されているものを使いましょう。
[CDN] moment.js
Moment.js 2.24.0
今回は moment.min.js を使います。
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>
エポック秒とエポックミリ秒
moment の公式ドキュメントを読むと、さまざまな日付操作が紹介されています。
Moment was designed to work both in the browser and in Node.js.
All code should work in both of these environments, and all unit tests are run in both of these environments.
Moment.js Documentation
その中で、エポック秒とエポックミリ秒に触れられている項目は以下になります。
・Unix Timestamp (seconds)
・Unix Timestamp (milliseconds)
では早速、エポック秒とエポックミリ秒を取得してみましょう。
console.log("s: " + moment().unix());
console.log("ms: " + moment().valueOf());
結果は以下の通り。上が「エポック秒」、下が「エポックミリ秒」になります。
s: 1577586912
ms: 1577586912196