kazmax - Linux で自宅サーバー

getdate - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 注意
  6. 環境変数
  7. 準拠
  8. 関連項目

名前

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

関連項目