systime = 現在の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk, mawk32専用) - AWK
○Gawk on Windows ○Gawk ○mawk32 ×Mawk ×awk
現在の時刻値(= Unix time = 基準時刻からの経過秒数)を調べます。o 時刻文字列に変換したい時は、「strftime = 時刻を文字列に変換する」
**** 書式
--------
systime()
--------
o この関数は、Gawkとmawk32の拡張機能です。
o 戻り値 -- 基準時刻からの経過秒数(= Unix time)
+ 通常、UTC(= 協定世界時)で1970年1月1日の0時からの経過秒数。但し、閏秒は数えません。
+ 通常、と書いたのは、AWKの仕様では無いからです。他の数え方をするシステムもあるかもしれません。
**** 使用例
--------
BEGIN {
print systime(); # systimeは整数で返します。
print strftime("%Y/%m/%d %H:%M:%S", systime()); # 文字列にしたい時
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 現在の時刻値(= Unix time = 基準時刻からの経過秒数)を調べます。
+ ▽Gawkの公式説明(= 英語です)によると、「POSIXシステムの場合(= 通常)、UTC(= 協定世界時)で1970年1月1日の0時からの経過秒数です。但し、閏秒は数えません。他のシステムでは違うかもしれません」となっていました。
+ ▽Windowsシステムでも同様です。閏秒は数えません。
+ 但し、UNIXで閏秒を有効にしている場合、経過秒数の計算方法について確認する必要があります。
o 戻り値は、整数です。読み易い文字列に変換したい時には、strftimeを使います。
o この関数をサポートしていない処理系があります。
**** メモ
o srandを2回呼ぶ事でも、同じ値を取得する事が出来ます。(= 多分、非公式動作)
o この関数は、AWKのコンパイル環境によっては、2038年問題を抱えています。
+ 2038年1月19日の途中で、正確に時刻を示さなくなる問題です。
+ それまでに、AWKプログラムを、2038年問題の対策版に入れ替える必要があります。
o 過去の日付を計算で求める時は、閏年の実装についても確認します。
+ Web検索した限りでは、(過去や未来の)閏年の計算ミスをしているシステムが、毎回発覚していました。
**** 確認した処理系
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) -- 非対応
==
関連ページ:
▼AWKの時刻取得関数と関連機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> mktime = 特定日時の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk専用)
srand = 乱数の種を設定する
strftime = 時刻を文字列に変換する(Gawk, mawk32専用)
+
ツール。systime関数とsrand関数の戻り値予想(Unix time)
(2010年6月23日追加。戻り値の内容はAWKの仕様外)