tzset - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
tzset, tzname, timezone, daylight - 時刻の変換情報を初期化する
書式
#include <time.h>
void tzset (void);
extern char *tzname[2];extern long timezone;extern int daylight;
説明
tzset () 関数は TZ 環境変数を用いて tzname 変数を初期化する。 この関数は、タイムゾーンに依存する他の時刻変換関数から自動的に呼び出される。 SysV 的な環境では、この関数は変数 timezone (GMT からの西向きの秒数) と daylight (このタイムゾーンにサマータイムに関するルールがなければ 0、 サマータイム期間が一年のどこかにあれば 0 以外) も設定する。
TZ 環境変数が設定されていない場合には、 tzname 変数はローカルな壁時計時刻 (wall clock time) に 最も近い値に初期化される。 このローカルな壁時計時刻としては、 システムのタイムゾーンディレクトリ (後述) にある tzfile (5) 形式のファイル localtime で指定されている値が用いられる。 (この際には /etc/localtime もよく用いられる。 これはシステムのタイムゾーンディレクトリにある 適切なファイルへのシンボリックリンクになっている。)
TZ 環境変数が存在しているが、その値が空だったり、 以下に示す形式のどれにもあてはまらない場合は、 協定世界時 (Coordinated Universal Time: UTC) が用いられる。
TZ の値は以下の 3 つの形式のいずれかを取ることができる。
最初の形式はサマータイム (daylight saving time)
を持たないローカルタイムゾーンに対して用いる。
std offset
std
文字列はタイムゾーンの名前を指定する。
アルファベットからなる 3 文字以上の文字列でなければならない。
offset
文字列は std
の直後に続き、
協定世界時 (UTC) を得るために
ローカルな時刻に加えなければならない時間を指定する。
offset
は、ローカルタイムゾーンがグリニッジ子午線 (Prime Meridian)
の西なら正の値、東なら負の値を取る。
時間 (hour) は 0 から 24 の間でなければならない。
分 (minute) と秒 (second) は 0 から 59 の間でなければならない。
2 番目の形式はサマータイムがある場合に用いられる。
std offset dst [offset],start[/time],end[/time]
指定にはスペースを含めてはならない。
先頭の std
と offset
は 1 番目の形式と同じで、
標準のタイムゾーンを指定する。
dst
文字列と offset
は、
対応するサマータイムゾーンの名前とオフセットを指定する。
オフセットが省略されると、デフォルトでは標準の一時間前となる。
start フィールドはサマータイムが有効になる時刻、 end フィールドは標準に戻る時刻である。 これらのフィールドは以下の形式で指定する。
- Jn
- 年の通日 (Julian day) で日にちを指定する。 n は 1 から 365 の間の数値。 うるう年の場合でも 2 月 29 日はカウントされない。
- n
- 年の通日で日にちを指定する。 n は 1 から 365 の間の数値。 うるう年の場合には 2 月 29 日がカウントされる。
- Mm .w .d
-
m
は月 (1 <= m
<= 12) を、
w
は月のうちの週 (1 <= w
<= 5) を、
d
は週のうちの日にち (0 <= d
<= 6) を示す。
w
= 1 は所属する d
が存在する最初の週、
w
= 5 は最後の週である。
d
= 0 は日曜日である。
time フィールドは、ローカルタイムを切り替える時刻を、 変更前のローカルタイムで表したものである。 省略された場合のデフォルトは 02:00:00 である。
3 番目の形式は、タイムゾーンの情報をファイルから読み込むように指定する。
:[filespec]
ファイルの指定 filespec が省略された場合は、 タイムゾーンの情報はシステムタイムゾーンディレクトリの localtime ファイルから読まれる。 最近ではシステムタイムゾーンディレクトリは普通 /usr/share/zoneinfo/localtime である。 このファイルは tzfile (5) 形式で書かれている。 filespec が与えられた場合は、 タイムゾーンの情報をそのファイルから読み込む。このファイルも tzfile (5) 形式で書かれている必要がある。 filespec が `/' で始まらなかった場合には、 システムタイムゾーンディレクトリからの相対パスで ファイルが指定されたことになる。
ファイル
用いられるシステムタイムゾーンディレクトリは (g)libc のバージョンに依存する。 libc4 と libc5 は /usr/lib/zoneinfo を用いる。libc-5.4.6 以降では、これが使えなかった場合には /usr/share/zoneinfo を使おうとする。 glibc2 では環境変数 TZDIR が存在すればそれを用いる。 このデフォルトはどのようにインストールされたかによるが、 普通は /usr/share/zoneinfo である。
このタイムゾーンディレクトリには以下のファイルが含まれる。
localtime ローカルタイムゾーンのファイル posixrules POSIX 式の TZ 書式ルール
/etc/localtime は、 localtime ファイルや、 システムのタイムゾーンディレクトリ中の適切なタイムゾーンファイルへの シンボリックリンクであることが多い。
準拠
SVr4, POSIX.1-2001, 4.3BSD
注意
daylight 変数は、現在がサマータイムであるかどうかを示しているのではない。 これはいくつかあるアルゴリズムのうちの番号を与える (アルゴリズムについては gettimeofday (2) の tz_dsttime 変数を見よ)。 これはもう何年も使われていないが、SUSv2 では必要とされている。
4.3BSD には char *timezone( zone , dst ) というルーチンがあり、これは 最初の引数 (GMT からの西向きの分数) に対応するタイムゾーンの名前を返す。 二番目の引数が 0 の場合は標準の名前が用いられ、 それ以外はサマータイム版の名前が用いられる。