getdate - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
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
- 入力指定が正しくない。
注意
getdate ()は getdate_err を用いているし、静的なバッファに結果を返すので、 リエントラントではない。 glibc では同じ機能を持つスレッドセーフな関数を提供している。 機能は同じである。結果はポインタ res が示すバッファに返され、 エラーが起こった場合には返り値がゼロ以外となり、これは上記に与えた getdate_err に対する値と同じものになる。
POSIX.1-2001 仕様における strptime ()には、 %E や %O といった修正子を用いた変換指定が含まれている。 一方この仕様では getdate ()の記述がない。glibc の実装では getdate ()は strptime ()を用いて実装されている。 よって自動的に全く同じ変換が両者でサポートされている。
glibc 実装では %Z 変換指定をサポートしていない。
環境変数
- DATEMSK
- 書式パターンを含むファイル。
- TZ , LC_TIME
- strptime ()が用いる変数。
準拠
POSIX.1-2001