EN JA
TZSET(3)
TZSET(3) FreeBSD Library Functions Manual TZSET(3)

名称

tzset, tzsetwall時間変換情報を初期化する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < time.h>

void
tzset( void);

void
tzsetwall( void);

解説

tzset() 関数は、ライブラリルーチン localtime(3) により使用される時間変換情報を初期化します。環境変数 TZ は、この変換はどのように行なわれるかを指定します。

環境に TZ が現れていない場合は、 tzfile(5) 形式ファイル /etc/localtime により指定されたローカル壁時計時間に利用可能な最善の近似が使用されます。

環境に TZ が現れているがその値がヌル文字列である場合は、協定世界時 (UTC) が (うるう秒補正なしで) 使用されます。

環境に TZ が現れ、その値がコロン (‘ :’) で始まる場合は、その値の残りは tzfile(5) 形式ファイルのパス名として使用され、そこから時間変換情報が読み込まれます。パス名の最初の文字がスラッシュ (‘ /’) である場合は、それは絶対パス名として使用されます。そうでなければ、そのパス名はシステムの時間変換情報ディレクトリに対する相対パス名として使用されます。

その値がコロンで始まらない場合は、それは (上に記述されたように) 時間変換情報の読み込むファイルのパス名として最初に使用されます。そのファイルを読み込めない場合は、値は時間変換情報の直接の仕様 (形式は下に記述) として解釈されます。

TZ 環境変数が tzfile(5) 形式ファイルを指定しておらず、直接の仕様と解釈できない場合は、 UTC が使用されます。

tzsetwall() 関数は、 localtime(3) がローカル壁時計時間に利用可能な最善の近似を返すようにお膳立てします。

仕様形式

TZ を時間変換情報の仕様として直接使う場合は、次のようなシンタックスを持たなければなりません (空白は明瞭にするために入れてあります)。

std offset [ dst [ offset][, rule]]

ここで、

std と dst
標準時間帯 ( std) または夏時間帯 ( dst) のための指示子である 3 以上のバイト。 std のみが必要とされます。 dst がない場合は、この地域で夏時間は利用されません。大文字と小文字は明示的に許可されます。先頭のコロン (‘ :’), 数字、コンマ (‘ ,’), マイナス (‘ -’), プラス (‘ +’), と ASCII NUL (ヌル) を除いて任意の文字が認められます。
offset
協定世界時に達するためにローカル時間に加えなければならない値を示します。 offset は、次のような形式を持ちます。

hh[: mm[: ss]]

分 ( mm) と秒 ( ss) は、オプション (省略可能) です。時 ( hh) は必要とされ、1 桁の数字でもよいでしょう。 std に続く offset は必要とされます。 dst に続く offset がない場合は、夏時間は標準時間よりも 1 時間進んでいるとみなされます。 1 桁以上の数字が使えます。値は常に十進数であると解釈されます。時間は 0 から 24 までの間でなければなりません。また分 (および秒) は—存在する場合は— 0 から 59 までの間でなければなりません。 (‘ -’) が先行する場合は、時間帯は本初子午線の東とみなされます。そうでなければ、西とみなされます (オプションで先立つ (‘ +’) を付けてもよい)。

rule
いつ夏時間に変更するか、またいつ夏時間から元に戻すかを示します。 rule は、次のような形式を持ちます。

date/time,date/time

ここで、最初の date は標準時間から夏時間への変更がいつ生じるかを表現し、2 つめの date はいつ元に戻すかを表現します。それぞれの time フィールドは、現在のローカル時間で、別の時間への変更がいつ行なわれるかを表現します。

date の形式は、次のうちの 1 つです。

J n
ユリウス日 n (1 ≤ n ≤ 365)。うるう日は数えられません。すなわち、—うるう年を含めた—すべての年で 2 月 28 日は 59 日目、 3 月 1 日は 60 日目になります。ときどきやってくる 2 月 29 日を明示的に参照することはできません。
n
0 を基準にしたユリウス日 (0 ≤ n ≤ 365 )。うるう日は数えられ、2 月 29 日を参照することは可能です。
M m.n.d
ある年の m 番目の月の第 n 週の d (0 ≤ d ≤ 6) 番目の曜日 (1 ≤ n ≤ 5), (1 ≤ m ≤ 12)。ここで、第 5 週とは第 4 週目または第 5 週目に生じる“第 m 月の最後の d 番目の日”を意味します。第 1 週は、 d 番目の日が生じる最初の週です。第 0 日は日曜日です。

time は、先行する符号 (‘ -’) または (‘ +’) が許されないことを除いて、 offset と同じ形式を持ちます。 time を与えない場合は、 02:00:00 がデフォルトとなります。

TZ 仕様に rule がない場合は、システム時間変換情報ディレクトリの中の tzfile(5) 形式ファイル posixrules により指定された規則は、 TZoffset 値で指定された値により置き換えられる標準時間および夏時間の UTC からのオフセットで使用されます。

System V Release 3.1 との互換性のため、セミコロン (‘ ;’) は、仕様の残りから rule を分けるために使うことができます。

関連ファイル

/etc/localtime
ローカル時間帯ファイル
/usr/share/zoneinfo
時間帯ディレクトリ
/usr/share/zoneinfo/posixrules
POSIX スタイルの TZ に関する規則
/usr/share/zoneinfo/Etc/GMT
UTC うるう秒

/usr/share/zoneinfo/UTC ファイルが存在しない場合は、 UTC うるう秒は /usr/share/zoneinfo/posixrules からロードされます。

歴史

tzset() と tzsetwall() 関数は、 4.4BSD ではじめて登場しました。
November 17, 1993 FreeBSD