2018-04-15

Linuxは日本語localeでなら和暦表記でも返してくれる

改元まで1年弱になってきました。
役所の書類とか公的なもの以外、和暦を使う事は余り無くなりました。
コンピューター管理上や国際的ネットサービスの利用で、西暦利用の方が日常に馴染んでいると思います。
しかし、元号を持ち続けるのも日本の歴史保持でもある訳です。

Linuxは、localeに合わせて、フォーマット整形して出力して出来ます。
日本語localeだと、dateコマンドで和暦表記を返してくれます。
今だと、ja_JP.utf8で設定している方が多いと思いますので、その前提での話です。
厳密には、LC_TIMEに設定している値になります。

e.g.)
実行した日(以下、今日と表記)
Command:date +'%Ex'
Answer:平成30年04月15日

今日から29年3ヶ月8日前
Command:date -d '-29 year -3 month - 8 day' +'%Ex'
Answer:昭和64年01月07日 

今日から29年3ヶ月7日前
Command:date -d '-29 year -3 month - 7 day' +'%Ex'
Answer:平成元年01月08日

良く考えないで、今日から88年9ヶ月21日前
Command:date -d '-88 year -9 month -21 day' +'%Ex'
Answer:昭和4年06月24日

これだと分かりにくいので、今日から16日後
Command:date -d '16 day' +'%Ex'
Answer:平成30年05月01日

%Exは変更フィールド記述子で、localeの年月日で上みたいに出力します。(その他略)
当然、新元号未発表前ですので、50年後を指定すると「平成80年04月15日」で返って来ます。
(32BitOSだと、2038年1月中頃までしか計算出来無いですが)
また、ディストリビューション毎で、和暦テーブルの保持が違うかも知れません。
ubuntu18.04だと、明治6年01月01日からしか表示出来ません。(そもそも太陽暦がここから)
前日は、西暦1872年12月31日で返って来ます。

だからなんだと言えばそうですが、これでも使い道が有るかも知れないし、無い知れない。

GUN dateとBSD dateでは、同じdateコマンドでも、命令が異なってますので、ご注意ください。
あと、dateコマンドで日付計算する時、挙動が自分の予定通りになら無い事があります。
ここでは説明しません。

0 コメント:

コメントを投稿