getdate

Autres langues

Langue: ja

Version: 2001-12-26 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

名前

getdate - 文字列を tm 構造体に変換する

書式

#define _XOPEN_SOURCE
#define _XOPEN_SOURCE_EXTENDED
#include <time.h>

struct tm *getdate(const char *string);

extern int getdate_err;

#define _GNU_SOURCE
#include <time.h>

int getdate_r (const char *string, struct tm *res);

説明

getdate() 関数は、ポインタ string が指す文字列を tm 構造体に変換し、その構造体を返す。 この tm 構造体は静的なメモリ領域にあるので、 次の呼び出しが行われ、上書きされているかもしれない。

strptime(3) (format 引数を取る) とは対照的に、 getdate() はファイルに書いてあるフォーマットを用いる (このファイルのフルパスは DATEMSK 環境変数に与えられている)。

マッチの際には大文字小文字を区別しない。 パターン中でも変換される文字列中でも、余分な空白文字は無視される。

パターンに指定できる変換指定は、 strptime(3) のものと同じである。ただしひとつ変換指定が追加されている。

%Z
タイムゾーンの名前。

%Z が与えられると、返される値は、そのタイムゾーンの現在時刻に対応する 要素別の時刻 (broken-down time) に初期化される。 与えられていないときは、現在のローカルタイムに対応する 要素別の時刻に初期化される。

曜日だけが指定された場合は、 今日または今日以降で、 その曜日に合致する最初の日が採用される。

月だけが指定された場合 (年の指定はなし) は、 今月または今月以降で、 その月に合致する最初の月が採用される。

時・分・秒がいずれも指定されなかった場合は、 現在の時・分・秒が採用される。

日付の指定がなかったが、時間 (hour) だけ指定された場合は、 現在の時間またはそれ以降で、その指定に合致する最初の時間が採用される。

返り値

成功すると、この関数は struct tm へのポインタを返す。 失敗すると NULL を返し、グローバル変数 getdate_err を設定する。 errno を変更することは規定されていない。 getdate_err には以下の値が定義されている。
1
DATEMASK 環境変数が空または未定義である。
2
テンプレートファイルを読み込みオープンできない。
3
ファイルステータスの情報が取得できない。
4
テンプレートファイルが通常のファイルでない。
5
テンプレートファイルの読み込み時にエラーが起こった。
6
メモリの割り当てに失敗した (メモリが足りない)。
7
入力にマッチしたファイルに、行が含まれていない。
8
入力指定が正しくない。

環境変数

DATEMSK
書式パターンを含むファイル。
TZ, LC_TIME
strptime(3) が用いる変数。

準拠

POSIX.1-2001

注意

getdate() は getdate_err を用いているし、静的なバッファに結果を返すので、 リエントラントではない。 glibc では同じ機能を持つスレッドセーフな関数を提供している。 機能は同じである。結果はポインタ res が示すバッファに返され、 エラーが起こった場合には返り値がゼロ以外となり、これは上記に与えた getdate_err に対する値と同じものになる。

POSIX.1-2001 仕様における strptime(3) には、 %E%O といった修正子を用いた変換指定が含まれている。 一方この仕様では getdate() の記述がない。glibc の実装では getdate() は strptime(3) を用いて実装されている。 よって自動的に全く同じ変換が両者でサポートされている。

glibc 実装では %Z 変換指定をサポートしていない。

関連項目

localtime(3), setlocale(3), strftime(3), strptime(3), time(3), feature_test_macros(7)