こんにちは。まさきです。
今回はJavaScriptのタイムスタンプからユニークなIDなどに使える一意な文字列を生成する方法をご紹介します。
結論
結論から言うと以下のコードで生成できます。
var id = new Date().getTime().toString();
現在時刻のタイムスタンプを生成しています。
タイムスタンプとは
タイムスタンプとは日時と時刻から作成される文字列です。
ウィキペディアでは以下のように言われています。
タイムスタンプとはある出来事が発生した日時・日付・時刻などを示す文字列。狭義には郵便物の発送日時等を示すために押される郵便印のことを指す。現在ではコンピュータにおける「タイムスタンプ」が良く知られている。
今回の方法では時間をミリ秒単位で算出してタイムスタンプを生成しているので、ミリ秒まで同時にIDを生成しない限りユニークとなります。
人間の作業ではミリ秒単位で合わせることは無理ですよね。なのでユニークなIDを生成することができます。
Dateオブジェクトについてはこちらの記事でご紹介しているので、よかったらご覧ください。
作成方法
冒頭にご説明したこちらの方法で生成することができます。
var id = new Date().getTime().toString();
こちらは現在時刻でDateオブジェクト生成して、getTimeを使ってタイムスタンプに変換しています。
この状態では数値型なので文字列にするためにtoString()メソッドを使って型を変換しています。
また以下のメソッドを使う方法でも同じ動作ができます。
var id = Date.now().toString();
Date.now()メソッドも標準のDateオブジェクトに用意されているので、使用するとタイムスタンプが作成できます。
しかし、このメソッドは ECMA-262 第 5 版で標準化されたため、動作しない場合は使わないかPolyfillを使って互換コードが動くようにしましょう。
詳しくはJavaScriptのリファレンスを確認ください。
応用
応用として2パターンご紹介します。
タイムスタンプを16進数に変換する
取得したタイムスタンプを16進数に変換することで、IDっぽくできます。
方法は先ほどtoString()で文字列に変換していたところで引数に16を渡します。
new Date().getTime().toString(16);
16を2にすると2進数に変換できます。
乱数を加える
タイムスタンプをさらにユニークにするために乱数を追加します。
乱数はMath.ramdom()で生成し、Math.floor()で四捨五入して整数にしています。
それをタイムスタンプの後ろに結合します。
new Date().getTime().toString() + Math.floor(Math.random() * 10).toString();
タイムスタンプからユニークなIDを生成する方法は以上です。
最後まで読んで頂きありがとうございます。