LoginSignup
4
5

More than 5 years have passed since last update.

Linuxのdateコマンドを使ってAprとかFebが何月なのかを知る方法、そしてその逆

Last updated at Posted at 2017-04-24

日付フォーマットが「Sun Apr 23 22:36:20...」とか[18/Feb/2017:22:19:42 +0900]のように月の部分が英語表記になっている機会に出くわすことがよくあるんですが、「Febって何月だっけなー」みたいに悩んでしまう事があります。

そんな時にLinuxのdateコマンドを使って調べる方法です。UbuntuとTiny Core Linuxで試していますが他のLinux上でいけると思います。

英語表記の月名から数字の月を得る

dateコマンドを使えば英語表記の月名から数字の月を得る事ができます。案外とシンプルに書けますので覚えやすいかなと思います。

英語表記が何月かを調べる
$ date -d"Apr 1" +%m
04
$ date -d"Feb 1" +%m
02

英語表記の後の「1」は日にちを表していて「Apr 1」は「4月1日」となって%mで月だけ取り出すという感じです。なので「1」の部分は「2」でも「3」でも「7」でも日にちの範囲内なら何でもOKです。

更に短く

ちょっと分かりにくくなりますがスペースは省略可能ですので、更に短く書くことができます。

更に短く
$ date -dApr1 +%m
04
$ date -dFeb1 +%m
02

日本語環境なら更に更に短くできる(ちょっとコツが必要)

日本語環境なら月は数字で表記されるため+%mを省略しても何となく分かります。年、日、時間を自分の頭の中でフィルターして月だけを見るというコツが必要となりますが…。

更に更に短く(日本語環境のみ)
$ date -dApr1
2017年  4月  1日 土曜日 00:00:00 JST
$ date -dFeb1
2017年  2月  1日 水曜日 00:00:00 JST

英語表記の部分の大文字小文字は関係ないけど…

英語表記の部分は大文字小文字は関係ありませんが、%mのところを%Mとすると意味が違ってしまうので注意が必要です。%mは月で%Mは時間を表します。

大文字でも小文字でもOK
$ date -d"apr 1" +%m
04
$ date -d"feb 1" +%m
02
$ date -d"APR 1" +%m
04
$ date -d"FEB 1" +%m
02
%mは大文字にするとNG
$ date -d"APR 1" +%M
00
$ date -d"FEB 1" +%M
00

念のため全ての月で試してみた

もしかしてという事もあるので全ての月名を試してみました。うん大丈夫そうですね。

全て変換
$ date -d"Jan 1" +%m
01
$ date -d"Feb 1" +%m
02
$ date -d"Mar 1" +%m
03
$ date -d"Apr 1" +%m
04
$ date -d"May 1" +%m
05
$ date -d"Jun 1" +%m
06
$ date -d"Jul 1" +%m
07
$ date -d"Aug 1" +%m
08
$ date -d"Sep 1" +%m
09
$ date -d"Oct 1" +%m
10
$ date -d"Nov 1" +%m
11
$ date -d"Dec 1" +%m
12

スペースを省略した場合も試してみました。こちらも大丈夫そうです。

スペースを省略した場合
$ date -dJan1 +%m
01
$ date -dFeb1 +%m
02
$ date -dMar1 +%m
03
$ date -dApr1 +%m
04
$ date -dMay1 +%m
05
$ date -dJun1 +%m
06
$ date -dJul1 +%m
07
$ date -dAug1 +%m
08
$ date -dSep1 +%m
09
$ date -dOct1 +%m
10
$ date -dNov1 +%m
11
$ date -dDec1 +%m
12

数字の月から英語表記を得る事も可能です

4月を英語表記にするとどうなるんだっけ?という時もdateコマンドが使えます。考え方は全く同じです。

数字から英語表記を調べる
$ date -d"4/1" +%b
Apr
$ date -d"12/1" +%b
Dec
$ date -d4/1 +%b #ダブルクォートは略してもOK
Apr
$ date -d12/1 +%b #ダブルクォートは略してもOK
Dec

日本環境だと4月とか12月と表示されてしまって意味がない結果となってしまうので、そうゆう場合はLC_ALL=Cを指定することで英語名を取得できます。

日本語環境の場合でもLC_ALL=Cを指定すればOK
$ date -d"4/1" +%b
 4月
$ date -d"12/1" +%b
12月
$ LC_ALL=C date -d"4/1" +%b
Apr
$ LC_ALL=C date -d"12/1" +%b
Dec
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5