.\" 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.6 2001/03/06 16:46:04 ru Exp % .\" .\" $FreeBSD$ .\" .Dd October 4, 1997 .Dt STRFTIME 3 .Os .Sh 名称 .Nm strftime .Nd 日付と時間をフォーマット .Sh ライブラリ .Lb libc .Sh 書式 .Fd #include .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 UTC での基準時点からの秒数で置き換えられます .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 バグ 月の象に関する変換指定は備えていません。