tzset

Section: C Library Functions (3)
Updated: 2026-02-08
Index JM Home Page roff page
 

名前

tzset, tzname, timezone, daylight - 時刻の変換情報を初期化する  

ライブラリ

標準 C ライブラリ (libc-lc)  

書式

#include <time.h>

void tzset(void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

tzset():

    _POSIX_C_SOURCE

tzname:

    _POSIX_C_SOURCE

timezone, daylight:

    _XOPEN_SOURCE
        || /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE
 

説明

tzset() 関数は TZ 環境変数を用いて tzname 変数を初期化します。この関数は、タイムゾーンに依存する他の時刻変換関数から自動的に呼び出されます。 System V 的な環境では、この関数は変数 timezone (UTC からの西向きの秒数) と daylight (このタイムゾーンにサマータイムに関するルールがなければ 0、 サマータイム期間が一年のどこかにあれば 0 以外) も設定します。

このタイムゾーンが "America/New_York" のような地理的タイムゾーンである場合、tzset() 機能はこれらの変数を未指定の値に初期化します(下記参照)。

TZ 環境変数が設定されていない場合には、 システムのタイムゾーンが使用されます。システムのタイムゾーンを設定するには、 tzfile(5) 形式のファイルを /etc/localtime にコピーしたりリンクしたりします。これらのファイルがあるタイムゾーンデータベースは、システムのタイムゾーンディレクトリ (ファイル の節を参照) に置かれています。

TZ 環境変数が存在しているが、その値が空だったり、 以下に示す形式のどれにもあてはまらない場合は、 協定世界時 (Coordinated Universal Time: UTC) が用いられます。

空でない値 TZ は、2 つの形式のいずれかになります。どちらの形式でも、前にコロンを付けることができますが、コロンは無視されます。最初の形式は、使用するタイムゾーンを直接表す文字列です:

 std offset[dst[offset][,start[/time],end[/time]]]

この指定方法ではスペースは一切使用しません。 std 文字列はタイムゾーンの省略形を指定します。アルファベットからなる 3 文字以上の文字列でなければなりません。小なり記号 (<) と大なり記号 (>) で囲むと、プラス (+) 記号、マイナス (-) 記号、および数字が含まれるように文字セットが拡張されます。 offset 文字列は std の直後に続き、 協定世界時 (UTC) を得るために ローカルな時刻に追加する時間を指定します。offset は、ローカルタイムゾーンがグリニッジ子午線 (Prime Meridian) の西なら正の値、東なら負の値を取ります。時間 (hour) は 0 から 24 の間で、分 (minute) と秒 (second) は 0 から 59 の間でなければなりません。

[+|-]hh[:mm[:ss]]

dst 文字列と offset は、 対応するサマータイムゾーンの名前とオフセットを指定します。オフセットが省略されると、デフォルトでは標準の一時間前となります。

start フィールドはサマータイムが有効になる時刻、 end フィールドは標準に戻る時刻です。これらのフィールドは以下の形式で指定します。

Jn
年の通日 (Julian day) で日にちを指定します。n は 1 から 365 の間の数値で閏日は計算に入りません。この形式では、2 月 29 日を表現することはできず、2 月 28 日が第 59 日で、3 月 1 日が常に第 60 日となります。
n
年の、ゼロベースでの通日 (Julian day) で日にちを指定します。 n は 0 から 365 の間の数値。 閏年の場合、2 月 29 日も日にちの計算に含められます。
Mm.w.d
これは、d は週のうちの日にち (0 <= d <= 6) を、w は月のうちの週 (1 <= w <= 5) を、m は月 (1 <= m <= 12) を示します。一週目とは所属する d が存在する最初の週、 w = 5 は最後の週です。d = 0 は日曜日です。

time フィールドは、現在有効な現地時間で、他の時間に変更する時期を指定します。offset と同じ書式を使用しますが、指定した日の前後の時間を表すために、時間を [-167167] の範囲にすることができます。省略した場合、既定値は 02:00:00 になります。

ニュージーランドの例です。ニュージーランドでは、標準のタイムゾーン (NZST) は UTC より 12時間進んでおり、 サマータイム (NZDT) は UTC の 13時間進んでいます。サマータイムは 9月の最終日曜から 4月最初の日曜までであり、ローカルタイムの切り替えの既定値は 02:00:00 です。

TZ="NZST-12:00:00NZDT-13:00:00,M9.5.0,M4.1.0/3"

2番目---または "geographic"---形式は、タイムゾーン情報をファイルから読み込むように指定します:

filespec

filespec は、タイムゾーン情報を読み出す tzfile(5) 形式のファイルを指定します。filespec が '/' で始まらない場合、ファイル指定はシステムのタイムゾーンディレクトリから相対的になります。指定されたファイルの読み込みや解釈ができない場合は、協定世界時 (UTC) が使用されます。ただし、filespec 形式は将来拡張される可能性があるため、アプリケーションは UTC を表すランダムな TZ 値に依存すべきではありません。

例を挙げます。もう一度ニュージーランドの例です:

TZ="Pacific/Auckland"
 

環境変数

TZ
この変数が設定された場合、 その値がシステムで設定されたタイムゾーンより優先して使用されます。
TZDIR
この変数が設定された場合、 その値がシステムで設定されたタイムゾーンデータベースのディレクトリパスより優先して使用されます。
 

ファイル


 /etc/localtime
システムのタイムゾーンファイル。

 /usr/share/zoneinfo/
システムのタイムゾーンデータベースのディレクトリ。

 /usr/share/zoneinfo/posixrules
TZ 文字列で dst タイムゾーンが他に何の指定なしで単独で指定された場合、 このファイルが start/end のルールに使用されます。 このファイルは tzfile(5) 形式です。既定では、 ゾーン情報の Makefile でこのファイルは America/New_York にハードリンクされます。

上記は現在の標準のファイルの場所ですが、 glibc のコンパイル時に変更できます。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照してください。
インターフェース属性

 tzset()
Thread safetyMT-Safe env locale
 

標準

POSIX.1-2024.  

履歴


 tzset()
tzname POSIX.1-1988, SVr4, 4.3BSD.
timezone
daylight POSIX.1-2001 (XSI), SVr4, 4.3BSD.

4.3BSD には char *timezone(zone, dst) というルーチンがあり、これは 最初の引数 (UTC からの西向きの分数) に対応するタイムゾーンの名前を返します。 二番目の引数が 0 の場合は標準の名前が用いられ、それ以外はサマータイム版の名前が用いられます。  

CAVEATS

tznametimezone、および daylight の値は指定されていないことが多く、これらの値にアクセスするとマルチスレッドアプリケーションで未定義の動作が発生する可能性があるため、コードは代わりに、内訳の時間構造 tm(3タイプ) の tm_gmtofftm_zone のメンバーからタイムゾーンのオフセットと略語を取得する必要があります。  

バグ

この機能はエラーを報告しないため、 TZ の値が有効なタイムゾーンを表しているかどうかを知る方法はありません。  

関連項目

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


 

Index

名前
ライブラリ
書式
説明
環境変数
ファイル
属性
標準
履歴
CAVEATS
バグ
関連項目

This document was created by man2html, using the manual pages.