- Tumbleweed 20260815-1.1
- Leap-16.0
- Leap-15.6
| tzset(3) | Library Functions Manual | tzset(3) |
名前¶
tzset, tzname, timezone, daylight - 時刻の変換情報を初期化する
ライブラリ¶
標準 C ライブラリ (libc, -lc)
書式¶
#include <time.h>
void tzset(void);
extern char *tzname[2]; extern long timezone; extern int daylight;
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 と同じ書式を使用しますが、指定した日の前後の時間を表すために、時間を [-167, 167] の範囲にすることができます。省略した場合、既定値は 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"
環境変数¶
ファイル¶
-
/etc/localtime - システムのタイムゾーンファイル。
-
/usr/share/zoneinfo/ - システムのタイムゾーンデータベースのディレクトリ。
-
/usr/share/zoneinfo/posixrules - TZ 文字列で dst タイムゾーンが他に何の指定なしで単独で指定された場合、 このファイルが start/end のルールに使用されます。 このファイルは tzfile(5) 形式です。既定では、 ゾーン情報の Makefile でこのファイルは America/New_York にハードリンクされます。
上記は現在の標準のファイルの場所ですが、 glibc のコンパイル時に変更できます。
属性¶
この節で使用されている用語の説明については、 attributes(7) を参照してください。
| インターフェース | 属性 | 値 |
| tzset() | Thread safety | MT-Safe env locale |
標準¶
POSIX.1-2024.
履歴¶
4.3BSD には char *timezone(zone, dst) というルーチンがあり、これは 最初の引数 (UTC からの西向きの分数) に対応するタイムゾーンの名前を返します。 二番目の引数が 0 の場合は標準の名前が用いられ、それ以外はサマータイム版の名前が用いられます。
CAVEATS¶
tzname、timezone、および daylight の値は指定されていないことが多く、これらの値にアクセスするとマルチスレッドアプリケーションで未定義の動作が発生する可能性があるため、コードは代わりに、内訳の時間構造 tm(3タイプ) の tm_gmtoff と tm_zone のメンバーからタイムゾーンのオフセットと略語を取得する必要があります。
バグ¶
この機能はエラーを報告しないため、 TZ の値が有効なタイムゾーンを表しているかどうかを知る方法はありません。
関連項目¶
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)
| 2026-02-08 | Linux man-pages (未リリース) |