STRFTIME(3) | FreeBSD Library Functions Manual | STRFTIME(3) |
名称
strftime — 日付と時間を書式設定するライブラリ
Standard C Library (libc, -lc)書式
#include < time.h> size_t
strftime( char * restrict buf, size_t maxsize, const char * restrict format, const struct tm * restrict timeptr);
size_t
strftime_l( char *restrict buf, size_t maxsize, const char * restrict format, const struct tm *restrict timeptr, locale_t loc);
解説
strftime() 関数は、 timeptr からの情報を format によって指される文字列に従ってバッファ buf に書式設定を行います。関数 strftime_l() は、 strftime() と同じこと行いますが、現在のロケールを使用するのではなく明示的なロケールを試みます。 format 文字列は、0 以上の変換指定および通常の文字から構成されます。すべての通常文字は、直接バッファにコピーされます。変換指定は、パーセント記号“‘ %
’”ともう 1 つの文字から構成されます。
配列には、 maxsize 個を超えない文字が置かれます。結果として生じる文字の総数が終端のヌル文字を含めて maxsize を超えない場合は、 strftime() は、終端のヌルを数えないで配列中の文字数を返します。それ以外の場合は、0 を返し、バッファの内容は、不定になります。
変換指定は、次に示すような形で展開した後バッファにコピーされます。
- %A
- 完全な曜日名の各国の表現で置き換えられます。
- %a
- 省略した曜日名の各国の表現で置き換えられます。
- %B
- 完全な月名の各国の表現で置き換えられます。
- %b
- 省略した月名の各国の表現で置き換えられます。
- %C
- (西暦年 / 100) の 10 進数で置き換えられます。 1 桁の数字の前には、0 が付きます。
- %c
- 時刻と日付の各国の表現で置き換えられます。
- %D
-
“
%m/%d/%y
”と同等です。 - %d
- 日を示す 10 進数 (01-31) で置き換えられます。
- %E* %O*
-
POSIX の地域拡張です。 %Ec %EC %Ex %EX %Ey %EY %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy というシーケンスは、代替的な表現を提供すると想定されます。
さらに、%OB は、別の形式の月の名前を表現するように実装されました。 (日に言及せずに単独で使用します)。
- %e
- 月の日を示す 10 進数 (1-31) で置き換えられます。 1 桁の数字の前には、空白が付きます。
- %F
-
“
%Y-%m-%d
”と同等です。 - %G
- 百年紀付きの 10 進数の年で置き換えられます。この年は、週の大部分を含んだものとなります (月曜日を週の最初の日として)。
- %g
-
“
%G
”と同じ年ですが、百年紀なしの 10 進数 (00-99) で置き換えられます。 - %H
- (24 時間時計で) 時間を示す 10 進数 (00-23) で置き換えられます。
- %h
- %b と同じです。
- %I
- (12 時間時計で) 時間を示す 10 進数 (01-12) で置き換えられます。
- %j
- 1 年の日を示す 10 進数 (001-366) で置き換えられます。
- %k
- (24 時間時計で) 時間を示す 10 進数 (0-23) で置き換えられます。 1 桁の数字の前には、空白が付きます。
- %l
- (12 時間時計で) 時間を示す 10 進数 (1-12) で置き換えられます。 1 桁の数字の前には、空白が付きます。
- %M
- 分を示す 10 進数 (00-59) で置き換えられます。
- %m
- 月を示す 10 進数 (01-12) で置き換えられます。
- %n
- 改行で置き換えられます。
- %O*
- %E* と同じです。
- %p
- "午前" (a.m.) または "午後" (p.m.) のいずれか該当する各国の表現で置き換えられます。
- %R
-
“
%H:%M
”と同等です。 - %r
-
“
%I:%M:%S %p
”と同等です。 - %S
- 秒を示す 10 進数 (00-60) で置き換えられます。
- %s
- 世界標準時基準時点からの秒数で置き換えられます ( mktime(3) 参照)。
- %T
-
“
%H:%M:%S
”と同等です。 - %t
- タブで置き換えられます。
- %U
- 1 年の週数 (日曜日を週の最初の日として) を示す 10 進数 (00-53) で置き換えられます。
- %u
- 1 週の日 (月曜日を週の最初の日として) を示す 10 進数 (1-7) で置き換えられます。
- %V
- 1 年の週数 (月曜日を週の最初の日として) を示す 10 進数 (01-53) で置き換えられます。新年の 1 月 1 日を含む週に 4 日以上の日がある場合は、その週が第 1 週となります。それ以外の場合は、その週は、前年の最後の週となり、その次の週が第 1 週となります。
- %v
-
“
%e-%b-%Y
”と同等です。 - %W
- 1 年の週数 (月曜日を週の最初の日として) を示す 10 進数 (00-53) で置き換えられます。
- %w
- 1 週の日 (日曜日を週の最初の日として) を示す 10 進数 (0-6) で置き換えられます。
- %X
- 時刻の各国の表現で置き換えられます。
- %x
- 日付の各国の表現で置き換えられます。
- %Y
- 百年紀付きの年を示す 10 進数で置き換えられます。
- %y
- 百年紀なしの年を示す 10 進数 (00-99) で置き換えられます。
- %Z
- 時間帯 (タイムゾーン) 名で置き換えられます。
- %z
- は、UTC からの時間帯の差で置き変えられます。先頭のプラス記号は、UTC から東を意味し、マイナス記号は、UTC から西を意味します。続く時間と分は、それぞれ 2 桁であり、間に区切り文字はありません (RFC 822 時刻ヘッダに共通です)。
- %+
- 日付と時刻の各国の表現で置き換えられます (書式は、 date(1) によって作成されるものに似ています)。
- %-*
- GNU libc 拡張です。数字の出力を実行するとき、少しもパディング (詰め物) を行いません。
- %_*
- GNU libc 拡張です。明白に空白のパディング (詰め物) を指定します。
- %0*
- GNU libc 拡張です。明白に 0 のパディング (詰め物) を指定します。
- %%
-
‘
%
’で置き換えられます。
規格
strftime() 関数は、‘%C
’, ‘
%D
’, ‘
%E*
’, ‘
%e
’, ‘
%G
’, ‘
%g
’, ‘
%h
’, ‘
%k
’, ‘
%l
’, ‘
%n
’, ‘
%O*
’, ‘
%R
’, ‘
%r
’, ‘
%s
’, ‘
%T
’, ‘
%t
’, ‘
%u
’, ‘
%V
’, ‘
%z
’, ‘
%+
’などを含む多くの拡張を含めて、 ISO/IEC 9899:1990 (“ISO C90”) に適合しています。
‘ %G
’, ‘ %g
’と‘ %V
’の置き換えにおける特殊な週数および年数は、 ISO 8601: 1988 に定義されています。 strftime_l() 関数は、 IEEE Std 1003.1-2008 (“POSIX.1”) に適合しています。
バグ
月の象に関する変換指定は、備えていません。strftime() 関数は、 format 引数でマルチバイト文字を正確に操作しません。
June 25, 2012 | FreeBSD |