2010年6月22日火曜日

strftime = 時刻を文字列に変換する(Gawk, mawk32専用) - AWK

AWKの時刻取得関数と関連機能
○Gawk on Windows ○Gawk ○mawk32 ×Mawk ×awk
時刻を文字列に変換します。


**** 書式
--------
strftime( 書式文字列 [, 時刻] )
--------

o この関数は、Gawkとmawk32の拡張機能です。
o 書式文字列 -- 書式です。文字列の形で指定します。
   + 書き方は下記、機能欄にあります。C言語のstrftimeと同じみたいです。
o 時刻 -- systimeの戻り値と同じ形式(= 整数)で指定します。省略した時は、現在時刻になります。
o 戻り値 -- 変換後の文字列


**** 使用例
--------
BEGIN {
  print strftime("%Y/%m/%d %H:%M:%S", systime());
  print strftime("%Y/%m/%d %H:%M:%S"); # 時刻を省略した書き方。現在時刻です。
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 指定された時刻を、指定された書式文字列に従って、文字列に変換します。
o 時刻が指定されなかった時は、現在時刻を使用します。

表示互換性のある strftime 書式(機能別)
書式(機能別)実行結果の例互換性説明
-- %文字 --
%%[%]パーセント記号
-- 年、月、日 --
%Y[2001]西暦年
%m[02]月(01-12)
%d[03]日(01-31)
%y[01]西暦年の下2桁(00-99)
%j[034]年の初めから数えた日数(001-366)
-- 時、分、秒 --
%H[04]時。24時間表記(00-23)
%M[05]分(00-59)
%S[06]秒(00-59)。閏秒を表示するシステムの場合は61秒までの可能性
%I[04]時。12時間表記(01-12)
-- 曜日、週番号 --
%w[6]曜日番号。日曜日が0(0-6)
%U[04]週番号。その年の最初の日曜日から1週目。最初の日曜日の前日までは00。(00-53)
%W[05]週番号。その年の最初の月曜日から1週目。最初の月曜日の前日までは00。(00-53)

** 処理系に依存する動作
o サポートしている書式は、処理系によって異なります。詳しくは
    + 「strftimeの書式一覧。 Gawk on Windows編
    + 「strftimeの書式一覧。 Gawk for Windows編
    + 「strftimeの書式一覧。 mawk MBCS (32bit版)編


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3 -- 非対応
o original = the one true awk(updated May 1, 2007) -- 非対応


**** 参考資料
o strftime関数の機能を調べる上で、参考になったWebページです。
▽Gawk本家ユーザーズガイドにおける、時刻関連機能の説明箇所(英語です)
▽Solaris 10における、C言語 strftime関数の説明
▽Solaris 10における、C言語 strftime関数の日本語対応
▽HP-UX11iにおける、C言語 strftime関数の説明


==
関連ページ:
    ▼AWKの時刻取得関数と関連機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > ▼AWKの入出力とコマンド実行機能
    +
    systime = 現在の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk, mawk32専用)
    srand = 乱数の種を設定する
    mktime = 特定日時の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk専用)
    sprintf = 文字列を組み立てる
(2010年6月27日追加。参考資料)