GETDATE
Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
getdate, getdate_r - 文字列を tm 構造体に変換する
書式
#define _XOPEN_SOURCE 500
#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
変換指定をサポートしていない。
関連項目
time(2),
localtime(3),
setlocale(3),
strftime(3),
strptime(3),
feature_test_macros(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 環境変数
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:42 GMT, November 19, 2007