CTIME(3) — UNIX Programmer’s Manual
名称
ctime, localtime, gmtime, asctime, tzset, tzsetwall, timezone − 日付と時刻を ASCII コードに変換します。
形式
extern char ∗tzname[2];
void tzset()
void tzsetwall()
char ∗ctime(clock)
long ∗clock;
#include <sys/time.h>
char ∗asctime(tm)
struct tm ∗tm;
struct tm ∗localtime(clock)
long ∗clock;
struct tm ∗gmtime(clock)
long ∗clock;
char ∗timezone(zone, dst)
解説
tzset は、 localtime で使われる時刻の変換情報を設定するために環境変数 TZ の値を使用します。 TZ が環境設定の中にない場合は、local wall clock time に最も近い時刻が localtime によって使用されます。 TZ が存在してもその値がナルの場合は、GMT (グリニッジ標準時刻) が 使用されます(閏秒の修正は除きます)。
TZ が / で始まっている場合は、 tzfile(5)− format file の時刻変換情報を読み込んだところからの絶対パスとして使用されます。 TZ が / 以外の文字で始まっている場合は、 システムの時刻変換情報のディレクトリに対しての相対パス名として使用されます。
tzsetwall は、 localtime が local wall clock time に最も近い値を返すための設定をします。
ctime は、 clock で指された整数(long int)を 1970年 1月 1日 00:00:00 GMT から 秒単位で表された時刻であるものとして変換し、
Thu Nov 24 18:22:48 1986\n\0
の形をした 26 文字からなる文字列へのポインタを返します。 全てのフィールドは、固定幅です。
localtime と gmtime は、以下で説明される "tm" 構造体のポインタを返します。 localtime は、タイムゾーンとタイムゾーンの補正を加えたものを GMT に対して 修正します(アメリカでの DST (夏時間補正) のように)。
修正をする前に、 localtime は tzset をコールします(tzset がカレントプロセスでコールされていない場合)。 "tm" 構造体を埋めた後、 location は、 tm_isdst 番目の tzname エレメントを設定します。 tzname は、 localtime のリターン値と共に使用されるタイムゾーンの別名である ASCII 文字を指す ポインタです。
gmtime は、GMT (グリニッジ標準時刻) に変換します。
asctime は、"tm" 構造体に含まれる時刻の値を、上記で示した 26文字のストリングに変換し、 その文字列を指すポインタを返します。
全関数の宣言や形式、"tm" 構造体などは、 <sys/time.h> というヘッダファイルに記述されています。 struct tm というタイプの構造体は、以下のフィールドを含んでいます。
int tm_sec;/∗ 秒 (0 − 60) ∗/
int tm_min;/∗ 分 (0 − 59) ∗/
int tm_hour;/∗ 時 (0 − 23) ∗/
int tm_mday;/∗ 日 (1 − 31) ∗/
int tm_mon;/∗ 月 (0 − 11) ∗/
int tm_year;/∗ 年 − 1900 ∗/
int tm_wday;/∗ 曜日 (日曜日 = 0) ∗/
int tm_yday;/∗ 年内通算日 (0 − 365) ∗/
int tm_isdst;/∗ DST (夏時間) は有効か? ∗/
tm_isdst は、DST(夏時間補正)のようなタイムゾーンの補正が有効であると、 ゼロでない値になります。
timezone は、最初の引数に関するタイムゾーンの名前を返します。 その引数の値は、グリニッジから西に向かって分単位で測ったものです。 2番目の変数が 0 の場合は標準の名前が使用され、 そうでない場合は夏時間用の名前が使用されます。 もし、必要な名前がルーチンの中のテーブルになかった場合、 GMT からの差分が生成されます。 例えば、アフガニスタンでは、GMT より 4:30 過ぎたところなので、 timezone(−(60∗4+30), 0) とすることになり、 GMT+4:30 という文字列が生成されます。
ファイル
/etc/zoneinfoタイムゾーン情報のディレクトリ
/etc/zoneinfo/localtimeローカルタイムゾーンのファイル
/etc/zoneinfo/GMTGMT ファイル (閏秒で必要)
関連事項
tzfile(5), getenv(3), time(2), chzone(8)
注意
リターン値は、常に同じ位置のデータ(static data)に書きますので、 各コールによって上書きされてしまいます。
NEWS-OSRelease 3.3