時刻を「相対表示」にしているWebサイトは何を考えているのか?
GitHubとかもそうなんだけど、何で相対時間表示にするんだろう?
— たき(=゚ω゚)ノ (@takytank) 2023年8月18日
不便だろって毎回思ってる。
相対時間にするにしたって、正確に絶対時間に計算できるならともかく、“last month”とかふざけてるにもほどがある。
上記ツイートを見てポエムを書きたくなったので。
サーバー側の都合 → Javascriptを使ってクライアント側で表示する必要がある
相対時間だとサーバ側はクライアントの時刻なんか関係なく、DB上の時刻と今の時間を引き算した文字列をhtmlに埋め込めばそれで終わり。
絶対時刻の場合、
サーバー側でやるにはどうにかしてユーザーのタイムゾーンを知る必要があるが、HTTPリクエストヘッダにはタイムゾーンの情報は含まれていない。
唯一Accept-languageの項目が近いと言えるけど、言語とタイムゾーンは全く一致しない。
言語がenだった場合はどのタイムゾーン扱いにするのか、イギリスvsアメリカですごい事になりそうだし、アメリカ国内でもタイムゾーンは複数あるので、時刻表示にはとても使えない。
クライアントのjavascriptではタイムゾーン(厳密に言えばGMTとのオフセット分)を取得出来るので、動的に描画している部分なら確定的に正しいクライアントの時間を表示可能。githubのコミットログ画面はこの処理をしている。
ユーザー側の都合 → サイトが表示している時刻のタイムゾーンが分からないから
ユーザーとしては(ログインしていないサイトでも)自分のタイムゾーンの絶対時刻で表示されるのがベストな事は異論ない。
例えば日本語のサイトで、ユーザーの大半が日本人と知っているサイトであれば、その絶対時間は99%JSTと考えるだろう。残りの1%を踏むと2008年の毎日新聞 になるけど。
しかし、その確信が無いサイトを見ていて 10:00 と表示されていた場合 ユーザーは以下の解釈が出来る。
これを時刻表示だけで確定的に判断する事は出来ない。
5分前
と相対時間で表示されていたら 自分のタイムゾーンだろうがとにかく5分前を指している事が100%分かる。