ミケネコ研究所 / MikeTime フォーマット

MikeTime フォーマット

時間表記のための新しいフォーマット提案


概要

MikeTime は、ミケネコ研究所が提案する、時間表記のための新しいフォーマットです。ASCII 文字 8 桁固定とコンパクトな文字列で、西暦 0〜 5999 年までを表現でき、ASCII ソート順は保たれ、視認性ができるだけ保持されるように設計されています。

フォーマット

MikeTime フォーマットは次のルールで 8 桁で表現されます。

[西暦 を 100 で割った商 ( int(year / 100) )  ] : 1桁
[西暦 の 10 の位] : 1桁
[西暦 の 1 の位] : 1桁
[月] : 1桁
[日] : 1桁
[時] : 1桁
[分] : 1桁
[秒] : 1桁

[ ] 内の数値は、MikeBASE-60 エンコーディングによって表現されます。

たとえば、2002/06/27 08:37:09 は次のように表記します。

[西暦 を 100 で割った商 20 ] : K
[西暦 の 10 の位 0] : 0
[西暦 の  1 の位 2] : 2
[ 6月] : 6
[27日] : R
[08時] : 8
[37分] : c
[09秒] : 9

日本人の慣習表記   2002/06/27 08:37:09
MikeTime 表記      K02-6S8c9   (ハイフンを加えています)

MikeTime フォーマットでは、西暦の下2桁が必ず数字となり、また、月は 1〜9月までは数字となります。2099 年までは、先頭の文字が必ず K です。したがって、この文字列は 2002年6月 だということは、一目で認識できるでしょう。

MikeTime フォーマットでは、任意の位置でハイフンで区切るかどうかについては言及しません。解析機は文字列中からハイフンをあらかじめ除いてから解釈すべきです。

MikeBASE-60 エンコーディング

MikeBASE-60 エンコーディングは、単純な 60進法です。0〜59 の整数 n を、次の 60文字の文字列の n + 1番目に対応させてエンコードします。

0123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
(0〜9、オーを除いたアルファベット大文字、エルを除いたアルファベット小文字)

0〜9 はそのままコーディングされるのと、ASCII ソート順が保たれるのが特徴です。従来の BASE 64 ではソート順が狂います。

他の表記との比較

表記法 表記フォーマット 桁数 視認性 ソート 有効範囲
日本の慣習表記 2002/06/27 08:37:09 14桁 ソート(Ascii)可能 0〜9999年
日本人なら最も直感的に判断できます。
UNIX 時間 (10進)1,025,180,263 10桁 × ソート可能 1970年〜2038年
(16進)3D1B0267 8桁 × ソート(Ascii)可能 1970年〜2038年
UNIX時間は、Unix epoch (1970/01/01 00:00:00) を基点とする秒数で、time() システムコールの返り値です。プログラムとの相性がよいという唯一の長所がありますが、桁数が多く、見た目に全く理解できず、有効期間が短いために関が原の戦いが行われた年号すら表現できません。タイムリミットも目の前です。
UNIX 時間 64bit拡張 (10進)0,000,000,001,025,180,263 19桁 × ソート可能 1970年〜約2900億年
(16進)00000000-3D1B0267 16桁 × ソート(Ascii)可能 1970年〜約2900億年
徐々に UNIX 時刻は 64bit に置き換えられてくるでしょう。従来との互換を保つために基点が相変わらず 1970 年で、歴史的年号が表現できません。
RFC 1123 Thu Jun 27 08:37:09 2002 18桁 × 0〜9999年
ネットワークでよく用いられるフォーマットです。プログラムがこの文字列を再解釈するのには不向きです。ソートが出来ないのも不便です。
MikeTime K02-6S8c9 8桁 ソート(Ascii)可能 0〜5999年
epoch の 16進表現と同じ桁数ですが、視認性でこちらの方が優れます。

MikeTime の問題点

MikeTime の最大の欠点は、必ずアルファベットの大文字小文字を区別する必要があるということです。したがって、大文字小文字を同一視する環境では使えません。ですので一意的なファイル名として用いるには不適切ですし、電話越しに伝えることは困難です。

5999 年までしか表現できないという制限が長いか短いかの判断は、人によって問われると思いますが、たいがいの用途において必要十分でありましょう。


MikeTime フォーマット http://mikeneko.creator.club.ne.jp/~lab/misc/miketime/
お問い合わせ <lab@mikeneko.ne.jp>