.\" Copyright (c) 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the American National Standards Committee X3, on Information .\" Processing Systems. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)strftime.3 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/stdtime/strftime.3,v 1.18.2.7 2001/12/14 18:33:59 ru Exp % .\" $FreeBSD$ .\" .Dd October 4, 1997 .Dt STRFTIME 3 .Os .Sh 名称 .Nm strftime .Nd 日付と時間をフォーマット .Sh ライブラリ .Lb libc .Sh 書式 .In time.h .Ft size_t .Fn strftime "char *buf" "size_t maxsize" "const char *format" "const struct tm *timeptr" .Sh 解説 .Fn strftime 関数は、 .Fa timeptr からの情報を .Fa format によって指される文字列に従ってバッファ .Fa buf にフォーマットします。 .Pp .Fa format 文字列は、0 以上の変換指定および通常の文字から構成されます。 すべての通常文字は、直接バッファにコピーされます。 変換指定は、パーセント記号 .Dq Ql % ともう 1 つの文字から構成されます。 .Pp 配列には .Fa maxsize 個を超えない文字が置かれます。 結果として生じる文字の総数が終端のヌル文字を含めて .Fa maxsize を超えない場合は、 .Fn strftime は終端のヌルを数えないで配列中の文字数を返します。 それ以外の場合は 0 を返し、バッファの内容は不定になります。 .Pp 変換指定は、以下に示すような形で展開した後バッファにコピーされます : .Bl -tag -width "xxxx" .It Cm \&%A 各国の表現で完全な曜日名で置き換えられます。 .It Cm %a 各国の表現で省略した曜日名で置き換えられます。 ここで、略称は最初の 3 文字です。 .It Cm \&%B 各国の表現で完全な月名で置き換えられます。 .It Cm %b 各国の表現で省略した月名で置き換えられます。 ここで、略称は最初の 3 文字です。 .It Cm \&%C (西暦年 / 100) の 10 進数で置き換えられます。 1 桁の数字の前には 0 が付きます。 .It Cm %c 各国の表現で時刻と日付で置き換えられます。 書式は .Xr ctime 3 が生成するものと同様であり、"%a %Ef %T %Y" と等価です。 これはまた、"3+1+6+1+8+1+4" の出力フォーマットを意味します。 .It Cm \&%D .Dq Li %m/%d/%y と同等です。 .It Cm %d 日を示す 10 進数 (01-31) で置き換えられます。 .It Cm \&%E* Cm \&%O* POSIX の地域拡張です。 %Ec %EC %Ex %EX %Ey %EY %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy というシーケンスは、代替的な表現を与えるものと見なされます。 .Pp 更に、%Ef は短縮形の月の名前と日を示し、 また %EF は長い形式の月と日を示し、 また %OB は別の形式の月の名前を示します (単独で使用し日付は指定しません)。 .It Cm %e 日を示す 10 進数 (1-31) で置き換えられます。 1 桁の数字の前には空白が付きます。 .It Cm \&%G 百年紀付きの年の 10 進数で置き換えられます。 この年は、週の大部分を含んだものとなります (月曜日を週の最初の日として)。 .It Cm %g .Dq Li %G と同じ年ですが、百年紀なしの 10 進数 (00-99) で置き換えられます。 .It Cm \&%H (24 時間時計で) 時間を示す 10 進数 (00-23) で置き換えられます。 .It Cm %h %b と同じです。 .It Cm \&%I (12 時間時計で) 時間を示す 10 進数 (01-12) で置き換えられます。 .It Cm %j 1 年の日を示す 10 進数 (001-366) で置き換えられます。 .It Cm %k (24 時間時計で) 時間を示す 10 進数 (0-23) で置き換えられます。 1 桁の数字の前には空白が付きます。 .It Cm %l (12 時間時計で) 時間を示す 10 進数 (1-12) で置き換えられます。 1 桁の数字の前には空白が付きます。 .It Cm \&%M 分を示す 10 進数 (00-59) で置き換えられます。 .It Cm %m 月を示す 10 進数 (01-12) で置き換えられます。 .It Cm %n 改行で置き換えられます。 .It Cm \&%O* %E* と同じです。 .It Cm %p 各国の表現で "午前" または "午後" の いずれか該当する表示で置き換えられます。 .It Cm \&%R .Dq Li %H:%M と同等です。 .It Cm %r .Dq Li %I:%M:%S %p と同等です。 .It Cm \&%S 秒を示す 10 進数 (00-60) で置き換えられます。 .It Cm %s 世界標準時基準時点からの秒数で置き換えられます .Xr (mktime 3 参照)。 .It Cm \&%T .Dq Li %H:%M:%S と同等です。 .It Cm %t タブで置き換えられます。 .It Cm \&%U 1 年のうちの週数 (日曜日を週の最初の日として) を示す 10 進数 (00-53) で置き換えられます。 .It Cm %u 1 週のうちの日 (月曜日を週の最初の日として) を示す 10 進数 (1-7) で置き換えられます。 .It Cm \&%V 1 年のうちの週数 (月曜日を週の最初の日として) を示す 10 進数 (01-53) で置き換えられます。 新年の 1 月 1 日を含む週に 4 日以上の日がある場合は、 その週が第 1 週となります。 それ以外の場合は、その週は前年の最後の週となり、 その次の週が第 1 週となります。 .It Cm %v .Dq Li %e-%b-%Y と同等です。 .It Cm \&%W 1 年のうちの週数 (月曜日を週の最初の日として) を示す 10 進数 (00-53) で置き換えられます。 .It Cm %w 1 週のうちの日 (日曜日を週の最初の日として) を示す 10 進数 (0-6) で置き換えられます。 .It Cm \&%X 各国の表現で時刻で置き換えられます。 .It Cm %x 各国の表現で日付で置き換えられます。 .It Cm \&%Y 百年紀付きの年を示す 10 進数で置き換えられます。 .It Cm %y 百年紀なしの年を示す 10 進数 (00-99) で置き換えられます。 .It Cm \&%Z 時間帯名で置き換えられます。 .It Cm \&%z は UTC からの時間帯の差で置き変えられます。 先頭のプラス記号は UTC から東を意味し、 マイナス記号は UTC から西を意味します。 続く時間と分は、それぞれ 2 桁であり、間に区切り文字はありません (RFC 822 時刻ヘッダに共通です)。 .It Cm %+ 各国の表現で日付と時刻を示すもので置き換えられます (フォーマットは .Xr date 1 によって作成されるものと同じです)。 .It Cm %% .Ql % で置き換えられます。 .El .Sh 関連項目 .Xr date 1 , .Xr printf 1 , .Xr ctime 3 , .Xr printf 3 , .Xr strptime 3 .Sh 規格 .Fn strftime 関数は、 .Ql %C , .Ql \&%D , .Ql %E* , .Ql %e , .Ql %G , .Ql %g , .Ql %h , .Ql %k , .Ql %l , .Ql %n , .Ql %O* , .Ql \&%R , .Ql %r , .Ql %s , .Ql \&%T , .Ql %t , .Ql %u , .Ql \&%V , .Ql %z , .Ql %+ などを含む多くの拡張を含めて、 .St -isoC に適合しています。 .Pp .Ql %G , .Ql %g , および .Ql \&%V の置き換えにおける特殊な週数および年数は、 ISO 8601: 1988 に定義されています。 .Sh バグ 月の象に関する変換指定は備えていません。