名前


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)

openSUSE Logo

コンテンツ