日時を使った新規ファイルの命名


なにか新しくファイルを作るときには命名法則を考える必要があります。

被らずにソートしやすいものとして日時の情報を使うことが多いですが、どうやって使うのがいいかなと思ったのでjavascriptで適当に動かしてみます。

ロケールタイム

地域時間を使った日時をファイル名に使うことはよくあります。

伝統にのっとりDateオブジェクトの関数を使ったり、(実装されていれば)optionsを使ったり、replace(もしくはsplit&join)を使うなどして好きなフォーマットにしてファイル名に含めればいいです。

Unix時間

1970/1/1 0:00:00から経過した秒数を利用します。

javascriptではms単位なので変なことをしなければ被ることはほぼないはず。

13桁の数字で日時を表せます。

桁数が増えるのは2286年なので基本無視していいんじゃないかな。

2038年問題(jsでは直接関係はないけど)やうるう秒の扱いも心の片隅に。

Unix時間 36進数

36進数は普段は使う機会が少ないですが便利な進数です。

カラーコードなどでよく使うHex(16進法)は(0-9|a-f)を使いますが、アルファベット全部を使うのが36進法表記(0-9|a-z)です。

こちらは8桁で表現できますね。

進数表記を増やす(例えば62進法表記(0-9|a-z|A-Z)など)と文字数を減らせますが、36進以降は処理のお手軽さがなくなりますしソートも考えないといけなくなります。

ちなみにこちらの桁数が増えるのは2059年で微妙ですが、ソートに問題が起きそうなのはずいぶんと後なのでそこまで気にすることもなさそう。

色々仮定の日時を書いてはいますが、msを捨てる(1/1000にする)判断をするなら全然違う結果になるのでやりたい方法を考えてから再計算したほうがいいです。

new Date(parseInt("zzzzzz",36)*1000)➡2038年末

どれを使うか

ロケールタイムを使って利用者にわかりやすい名前にするのがいいと思います。

内部で使うものにはUnix timeをそのまま使うと利便性が高いし、どうしても短めの名前が欲しい場合には36進数は低コストでよい方法だと思います。

日時が気に入らないならIDを振ったりカウントしていく方法がありますが、最近はあまり見かけない気がします。


コメントを残す

メールアドレスが公開されることはありません。