ミリタリータイムゾーン

タイムゾーンというと、+0900 のように符号と四桁の数字か、UTC PST JST のような三文字の英字*1、Asia/Tokyo のようなzoneinfoのファイル名とかで表すが、米軍規格の一文字英字もある。UTC を一文字で Z で表すのはここから来ている。ちなみに JST は V だ。


現在でもちゃんとgnu-dateにその機能が残っている。

export TZ=UTC
for T in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z JST PST
do date "+$T %Y-%m-%d %H:%M" -d "2010-01-01 00:00:00 $T"
done

実行結果、つまり「各タイムゾーンの午前0時がUTCで何時になるか」は、

A 2010-01-01 01:00
B 2010-01-01 02:00
C 2010-01-01 03:00
D 2010-01-01 04:00
E 2010-01-01 05:00
F 2010-01-01 06:00
G 2010-01-01 07:00
H 2010-01-01 08:00
I 2010-01-01 09:00
date: invalid date `2010-01-01 00:00:00 J'
K 2010-01-01 10:00
L 2010-01-01 11:00
M 2010-01-01 12:00
N 2009-12-31 23:00
O 2009-12-31 22:00
P 2009-12-31 21:00
Q 2009-12-31 20:00
R 2009-12-31 19:00
S 2009-12-31 18:00
T 2009-12-31 17:00
U 2009-12-31 16:00
V 2009-12-31 15:00
W 2009-12-31 14:00
X 2009-12-31 13:00
Y 2009-12-31 12:00
Z 2010-01-01 00:00
JST 2009-12-31 15:00
PST 2010-01-01 08:00

面白いのは、どちらか方向に一周するのでなく、西半球を半周してから東半球の半周に戻ることと、飛ばしているのがIとかOじゃなくてJなこと。

*1:UTC以外はobsoleteということになっているが