スポンサーリンク

TZSET(3) FreeBSD ライブラリ関数マニュアル TZSET(3)

名称

tzset, tzsetwall − 時間変換情報の初期化

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <time.h>

void

tzset(void);

void

tzsetwall(void);

解説

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

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

環境に TZ が現れているがその値が null ストリングである場合には、世界標準 時刻 (UTC) が用いられます ( うるう秒補正なしで )。

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

その値がコロンで始まらない場合は、それはまず ( 上に説明したように ) 時間 変換情報の読み取り用ファイルのパス名として用いられます。そのファイルが読 めない場合は、その値は時間変換情報の直接的仕様 ( 形式は下に説明 ) である と解釈されます。

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

tzsetwall() 関数は、ローカル壁時計時間に最も近い近似値を返すように調整を 行います。

仕様形式

TZ を時間変換情報の仕様として直接使う場合は、次のようなシンタックスを持つ 必要があります ( 空白は読みやすくするために入れてあります ):

std offset [

                         dst [offset] [, rule]]

ここで:

             stddst

標準時間帯 ( std ) または夏時間帯 ( dst ) の指示子であ る 3 以上のバイト。必要なのは std のみです。 dst がな い場合は、この地域では夏時間が適用されません。大文字と 小文字の区別は明示的に許可されます。先頭のコロン (‘:’), 小数点、コンマ (‘,’), マイナス (‘−’), プラス (‘+’), および ASCII NUL 以外のキャラクタであれば使えま す。

offset
世界標準時を計算するためにローカル時間に加えるべき値を 示します。 offset は、次のような形式を持ちます:

hh[

                                   :mm[:ss]]

分 (mm) および秒 (ss) を付けるのは任意です。時は必要 で、 1 桁の数字でも構いません。 std に続く offset は必 要です。 dst の後に offset がない場合は、夏時間は標準 時間よりも 1 時間進むものとみなします。 1 桁以上の数字 が使えます。値は常に十進数であると解釈されます。時は 0 から 24 までの間、また分 ( および秒 ) を指定する場合は 0 から 59 までの間でなければなりません。先頭に (‘−’) が付いている場合は、時間帯は本初子午線の東となります。 それ以外の場合は、西となります ( 任意で先頭に (‘+’) を 付けて指定しても構いません ) 。

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

date/time,date/time

ここで、最初の date は標準時間から夏時間への変更がいつ 起きるかを表し、 2 番目の date はいつ元に戻すかを表し ます。それぞれの time フィールドは、現在のローカル時間 からもう一方の時間への変更をいつ行うかを表します。

date の形式は、次のいずれかです:

                          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 によ り指定された規則が用いられ、標準時間および夏時間の UTC からのオフセットは TZ の offset 値で指定された値により 置き換えられます。

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

関連ファイル

       /etc/localtime

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

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

関連項目

date(1), gettimeofday(2), ctime(3), getenv(3), time(3), tzfile(5)

歴史

tzset() および tzsetwall() 関数は、最初に 4.4BSD に現れました。

FreeBSD 10.0 November 17, 1993 FreeBSD 10.0

スポンサーリンク