新元号は令和になりました。気になる Linux での対応状況は

こんにちは。新元号が「令和」に決まりましたね。個人的には Linux での対応状況になるかと思います。Linux カーネルで直接元号を扱うことは無いかと思いますが、glibc では、元号に対応しています。 strftime() 関数で 書式指定に “%E” 修飾子を指定することで元号を出力することができます。

例えば 以下の通りです。

$ LC_TIME=ja_JP.UTF-8 date +'%Ec'
平成31年04月01日 14時38分32秒

$ LC_TIME=ja_JP.UTF-8 date +'%EC'
平成

$ LC_TIME=ja_JP.UTF-8 date +'%Ex'
平成31年04月01日

$ LC_TIME=ja_JP.UTF-8 date +'%EX'
14時38分43秒

$ LC_TIME=ja_JP.UTF-8 date +'%Ey'
31

$ LC_TIME=ja_JP.UTF-8 date +'%EY'
平成31年

※ちなみに私は今まで知りませんでした。

このデータは glibc の localedata/locales 配下の ja_JP ファイルに以下のように定義されています。

git commit 656dd306d49f34fb89a118624def9c1db8a9cfcb より

era     "+:2:1990//01//01:+*:<U5E73><U6210>:%EC%Ey<U5E74>";/
        "+:1:1989//01//08:1989//12//31:<U5E73><U6210>:%EC<U5143><U5E74>";/
        "+:2:1927//01//01:1989//01//07:<U662D><U548C>:%EC%Ey<U5E74>";/
        "+:1:1926//12//25:1926//12//31:<U662D><U548C>:%EC<U5143><U5E74>";/
        "+:2:1913//01//01:1926//12//24:<U5927><U6B63>:%EC%Ey<U5E74>";/
        "+:1:1912//07//30:1912//12//31:<U5927><U6B63>:%EC<U5143><U5E74>";/
        "+:6:1873//01//01:1912//07//29:<U660E><U6CBB>:%EC%Ey<U5E74>";/
        "+:1:0001//01//01:1872//12//31:<U897F><U66A6>:%EC%Ey<U5E74>";/
        "+:1:-0001//12//31:-*:<U7D00><U5143><U524D>:%EC%Ey<U5E74>"

UNICODE のコード番号で書かれていてわかりにくいですが、明治以降の大正、昭和、平成までの元号が定義されていてそれ以前は「西暦」〇 年 とか、「紀元前」〇 年などと表示されるようです。

それで気になる RHEL での対応状況ですが、アップストリームの対応待ちとなっていました。

bz1555189 glibc: The Japanese Era name will be changed on May 1, 2019

今のところアップストリームの git でも上記のように取り込まれていないようです。

glibc git

ただパッチのリクエストは出ているようです。[Bug localedata/24405] New: New era for Japan

Linux 上のシステムであまり和暦を使うことは無いような気もしますが、せっかくなのでイベントに乗ってみました。

以上です。

2019.04.04 追記

glibc のアップストリームで、パッチが取り込まれたようです。

ja_JP locale: Add entry for the new Japanese era [BZ #22964]

2019.04.11追記

RHEL で 新元号 "令和" 対応のエラッタがリリースされています。

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.