ZIC(8) | FreeBSD System Manager's Manual | ZIC(8) |
名称
zic — タイムゾーンコンパイラ書式
zic | [ --version][ -Dsv][ -d directory][ -g group][ -L leapsecondfilename][ -l localtime][ -m mode][ -p posixrules][ -u user][ -y command][ filename ...] |
解説
zic ユーティリティは、コマンド行で指定されたファイルを読み込み、その内容に従って時刻変換情報のファイルを作成します。 filename が - だった場合、標準入力から読み込みます。次のオプションが利用可能です:
- --version
- バージョン情報を出力して終了します。
- -D
- 自動的にはディレクトリを作成しません。入力ファイルが出力先のファイルとして、まだ存在していないディレクトリを指定していた場合には、デフォルトの動作ではディレクトリの作成を試みます。 -D が指定された場合には、 zic は、そうせずに即座にエラーとします。
- -d directory
- 下記の標準ディレクトリではなく、指定されたディレクトリに時刻変換情報ファイルを作成します。
- -g group
- それぞれの出力ファイルを作成した後に、ファイルのグループオーナを指定された group (名前でも数字のグループ ID でも構いません) に変更します。
- -L leapsecondfilename
- 指定された名前のファイルからうるう秒の情報を読み込みます。このオプションが指定されなかった場合、出力ファイルには、うるう秒の情報は記録されません。
- -l timezone
-
指定された
タイムゾーン をローカルの時刻に使用します。
zic ユーティリティは、以下のリンク行が入力ファイルにあった場合と同様に働きます。
Link timezone localtime
( FreeBSD では、ローカルタイムゾーンは、 /usr/share/zoneinfo/localtime でなく /etc/localtime で指定されるので、このアクションは、何の効果も持たないことに注意してください)。
- -m mode
- それぞれの出力ファイルを作成した後、ファイルのアクセス権を mode に変更します。モードは、数字とアルファベットのどちらでも構いません ( chmod(1) 参照)。
- -p timezone
-
POSIX 形式の
タイムゾーン の環境変数を扱う場合に、指定されたタイムゾーンのルールを使用します。
zic ユーティリティは、以下のリンク行が入力ファイルにあった場合と同様に働きます。
Link timezone posixrules
- -u user
- それぞれの出力ファイルを作成した後に、ファイルのオーナを指定された user (名前でも数字のユーザ ID でも構いません) に変更します。
- -v
- データファイル中の年が time(3) で表現できる年の範囲を超えていた場合、警告します。
- -s
- 出力ファイルに記録される時刻の値を、それが符号付きと扱われるか符号なしと扱われるかに関係なく同じ値になるように制限します。このオプションを使用することで SVVS と互換のファイルを生成できます。
- -y command
- 年のタイプをチェックする際に、 yearistype の代わりに指定された command を用います(下記参照)。
入力の各行は、フィールドから構成されます。各フィールドは、任意の数の空白文字により分離されます。先行する空白や、行末の空白は、無視されます。引用符で囲まれていない井桁文字 (#) からその行の末尾までは、コメントとして扱われます。空白文字や井桁文字をフィールドの一部として使用する場合は、二重引用符 (") で囲みます。 (コメントを取り除いた後の)空白行は、無視されます。空白ではない行は、ルール行、ゾーン行、リンク行の 3 種類のいずれかであるとみなされます。
(月の名前のような) 名前は、英語でなければならなくて、大文字と小文字を区別しません。使用されるなら、省略形は、コンテキストで明白でなければなりません。
ルール行は、次の形式です:
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
例えば、次の通りです:
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
となります。ルール行を構成するフィールドは、次の通りです:
- NAME
- このルールが属するルールの(任意の)名前を指定します。
- FROM
- ルールが適用される最初の年を指定します。如何なる整数の年も指定できます。グレゴリオ暦を仮定しています。単語 minimum (あるいはその短縮形) は、整数で表せる最小の年を示します。単語 maximum (あるいはその短縮形) は、整数で表せる最大の年を示します。ルールには、時刻の値として表す事ができない時刻を書くこともできますが、表す事ができない時刻は、無視されます。これにより、時刻の値のタイプが異なるホスト間でルールを共用する事ができます。
- TO
- ルールが適用される最後の年を指定します。 minimum や maximum (上記)に加え、単語 only (あるいはその短縮形) を、 FROM フィールドの値を指すものとして使用することができます。
- TYPE
-
ルールが適用される年のタイプを指定します。
TYPE が
- だった場合、ルールは、
FROM から
TO までのその年を含む全ての年に適用されます。
TYPE がそれ以外だった場合、
zic は、コマンド
yearistype
year type を実行して、年のタイプをチェックします。実行したコマンドの終了ステータスが 0 だった場合は、その年が指定されたタイプであり、終了ステータスが 1 だった場合は、その年が指定されたタイプではないと判断します。 - IN
- ルールが適用される月の名前を指定します。月名は、短縮形でも構いません。
- ON
-
ルールが適用される日を指定します。指定できる形式は、次の通りです:
- 5
- その月の 5 日
- lastSun
- その月の最後の日曜日
- lastMon
- その月の最後の月曜日
- Sun>=8
- 8 日以降の最初の日曜日
- Sun<=25
- 25 日以前の最後の日曜日
曜日は、短縮形でも、フルスペルでも構いません。注意: ON フィールド内にスペースを含んではいけません。
- AT
-
ルールが適用される時刻を指定します。指定できる形式は、次の通りです:
- 2
- 時
- 2:00
- 時と分
- 15:00
- 24 時間形式の時刻 (正午以降について)
- 1:28:14
- 時、分、秒
ここで、0 時は、一日の始まりの深夜を意味し、 24時は、一日の終わりの深夜を意味します。これらの形式の最後に‘
w
’をつけると、指定した時刻がローカルの“掛け時計”であり、‘s
’をつけると、指定した時刻がローカルの“標準時”であり、‘u
’ (あるいは‘g
’ないし‘z
’) をつけると、指定した時刻が世界標準時であることを示します。これらの文字を指定していない場合は、掛け時計が適用されます。 - SAVE
-
ルールが有効な場合にローカルの標準時に加えられる量を指定します。このフィールドの形式は、
AT フィールドと同じです (この場合は、末尾に‘
w
’と‘s
’を指定する事はできません)。 - LETTER/S
- ルールが有効な場合にタイムゾーンの短縮形に用いられる“変化部分” (例えば、“EST”や“EDT”の“S”や“D”) を指定します。このフィールドが - だった場合、変化部分は、ヌル (NULL) になります。
ゾーン行は、次の形式です:
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTILYEAR [MONTH [DAY [TIME]]]]
例えば、次の通りです:
Zone Australia/Adelaide 9:30 Aus CST 1971 Oct 31 2:00
ゾーン行を構成するフィールドは、次の通りです:
- NAME
- タイムゾーンの名称です。そのゾーンに対する時刻変換情報ファイルを作成する時の名前になります。
- GMTOFF
- そのゾーンの標準時を得る時に UTC に加算される量です。このフィールドの形式は、ルール行の AT および SAVE フィールドと同じです。 UTC から時刻を引く場合は、フィールドの最初にマイナスをつけます。
- RULES/SAVE
- そのタイムゾーンに適用されるルールの名前、あるいは、ローカルの標準時に加算される量を指定します。このフィールドが - だった場合、そのタイムゾーンには、常に標準時が適用されます。
- FORMAT
- そのタイムゾーンで使用されるタイムゾーンの短縮形の形式を指定します。文字列 %s は、タイムゾーンの短縮形で用いられる“変化部分”を示します。一方、スラッシュ (/) で標準時の短縮形と夏時間の短縮形を指定する事もできます。
- UNTILYEAR [MONTH [DAY [TIME]]]
-
その場所で UTC との差あるいはルールが変化する時刻を指定します。年、月、日、時刻を用いて指定できます。このフィールドが指定された場合、その時刻になるまでは与えられた UTC との差およびルールからタイムゾーンの情報が生成されます。月、日、時刻は、ルールの IN, ON, AT フィールドと同じ形式です。続くフィールドは、省略可能で、足りないカラムは、最も早い可能な値がデフォルトとなります。
この次の行は、“継続”行でなくてはなりません。この行は、最初の“Zone”と NAME フィールドがない点を除いてはゾーン行と同一の形式で、その前の行の until 情報で指定した時刻以降の情報を指定します。この継続行にも until 情報を指定することができ、その場合は、次の行にその時刻以降の情報を指定します。
リンク行は、次の形式です:
Link LINK-FROM LINK-TO
例えば、次の通りです:
Link Europe/Istanbul Asia/Istanbul
LINK-FROM フィールドは、存在するゾーン行の NAME フィールドのいずれかと一致していなければなりません。 LINK-TO フィールドは、そのゾーンに対する別名として使用されます。
継続行以外は、入力中での行の順番に制限はありません。
うるう秒の定義ファイルの各行は、次の形式です:
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
例えば、次の通りです:
Leap 1974 Dec 31 23:59:60 + S
YEAR, MONTH, DAY, HH:MM:SS フィールドは、うるう秒が起きる時刻を指定します。 CORR フィールドは、秒が加えられる場合は、“+”で、秒がスキップされる場合は、“-”となります。 R/S フィールドは、他のフィールドで与えられるうるう秒の時刻が UTC である場合は、“Stationary” (またはその短縮形)で、他のフィールドで与えられるうるう秒の時刻がローカルのウォールクロックである場合は、“Rolling” (またはその短縮形)となります。
拡張例
ここに、その機能の多くを例証することを目的とする、 zic 入力の拡張例を示します。1940 年に、夏時間は、11 月 2 日 00:00 から 12 月 31 日 00:00 まで適用しました。 1941 年と 1942 年に、夏時間は、5 月の最初の日曜日の 02:00 から 10 月の最初の日曜日の 00:00 まで適用しました。 1981 年以前の EU の夏時間規則 (daylight-saving rule) は、ここで効果がありませんが、完全性のために含まれています。 1981 年以来、夏時間は、3 月の最後の日曜日の 01:00 時 UTC (協定世界時) に始まっています。 1995 年まで、9 月の最後の日曜日の 01:00 UTC (協定世界時) に終りましたが、これは、1996 年から 10 月の最後の日曜日に変更しました。
表示の目的のために、"LMT"と "BMT"が、それぞれ最初に使用されました。 Swiss 規則と、その後の EU 規則が適用されて以来、タイムゾーンのための表示名は、標準時間のための CET と夏時間のための CEST となっています。
注
ローカル時刻が複数のタイプとなる地域では、作成されたファイルの最初の変化時刻を正しく設定するためには、最初の変化時刻のルールの AT フィールドでローカルの標準時を使用する必要があります。特定のゾーンに関して、時計が同時に起こる夏時間の始まりに起因して進められ、UTC オフセットの変更に起因して遅くされた時計と等しいなら、 zic は、(掛け時計の変更なしで) 新しい UTC オフセットで夏時間のための単一の遷移を引き起こします。別々の遷移を取得するためには、ユニバーサル時間を使用する遷移の瞬間を指定する複数のゾーンの継続行を使用します。
関連ファイル
- /usr/share/zoneinfo
- 作成されたファイルが置かれる標準ディレクトリ
June 20, 2004 | FreeBSD |