日の符号生成機

日付って書くと結構長いですよね。 日付を短いIDにできたら便利なので、 紀元からの経過日数を base32 エンコードするだけのウェブサービスを作りました。
日付 符号
<==>

使い方

ページを開くと、今日の日付と今日の「符号」が表示されます。 日付の入力欄に別の日付を入力すると、 入力した日に対応する「符号」が表示されます。

逆に符号の欄に符号を入力する (入力を Enter 等で確定する) と、 その符号に対応する日が表示されます。

表示される符号は日付から簡単な方法で計算されるもので、 誰が計算しても同じ日は同じ符号が得られます。

アルゴリズムの説明

1970/01/01 から入力された日までの経過日数を、 2倍 して base32 (最初の桁が最上位, 他の標準に準拠していません) で エンコードします。負値はその絶対値を2倍し、1減算してからエンコードします。

base32 の文字と数値の対応は表のとおりです。小文字も大文字と同様に受け付けられます。 文字が複数書かれている数値は、どの文字を入れても同様にデコードできます。 エンコードするときは先頭の文字を使います。 エンコードした値は、 ASCII コードで辞書順ソートしたときに 数値順でソートしたときと同じ順に並びます。(桁数が同じなら)

文字 数値
0,O 0
1,I,L 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9,Q 9
A 10
B 11
C 12
D 13
E 14
F 15
G 16
H 17
J 18
K 19
M 20
N 21
P 22
R 23
S 24
T 25
U 26
V 27
W 28
X 29
Y 30
Z 31

Author: dyknon < dyknon r5f jp >