mktime = 特定日時の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk専用) - AWK
○Gawk on Windows ○Gawk ×mawk32 ×Mawk ×awk
特定日時の時刻値(= 基準時刻からの経過秒数 = Unix Time)を調べます。o 時刻文字列に変換したい時は、「strftime = 時刻を文字列に変換する」
**** 書式
--------
mktime( 時刻文字列 )
--------
o この関数は、Gawkの拡張機能です。
o 日時文字列 -- 数字の並びで指定します。
+ 時刻文字列の書き方は、"年 月 日 時 分 秒 [夏時間フラグ]"
+ 書き方の例。"2010 3 9 23 59 59" もしくは、"2010 3 9 23 59 59 0"
+ 月などの前ゼロはお好みで。付けても付けなくても、同じ結果になります。
+ 詳しい書き方は、下の通りです。
o 戻り値 -- -1以外 = 基準時刻からの経過秒数(= Unix time) / -1 = 変換失敗
+ 通常、UTC(= 協定世界時)で1970年1月1日の0時からの経過秒数。但し、閏秒は数えません。
** 日時文字列 の書き方について
o 夏時間フラグは、省略も出来ます。
o 年以外は、0や負の値を指定する事も出来ます。
+ 月の場合、0月は、前年の12月を指します。-1なら11月です。
+ 日の場合、0日は、前月の最終日を指します。-1なら2日前です。
+ 時分秒は、素直に計算出来ます。-1時なら1時間前です。
o 数字の間に入れるのは、半角空白です。2つ入れたり、タブ文字を入れても大丈夫でした。
o 夏時間フラグは、1 = 夏時間 / 0 = 標準時間 / -1 = 自動判定(初期値)
o 夏時間の自動判定方法は、処理系をコンパイルした時に使ったC言語処理系に依存します。
o 今の所、指定出来る時刻は次の通りです。
+ 世界協定時: 1970年1月1日0時0分0秒(UTC)から 2038年1月19日3時14分7秒(UTC)まで
+ 日本標準時: 1970年1月1日9時0分0秒から 2038年1月19日12時14分7秒まで
+ なお、2038年以降指定出来ない問題は、近い将来登場する(おそらく64ビットOS用の)処理系で解決される見通しです。
**** 使用例
--------
BEGIN {
print mktime("2010 12 31 -12 0 0"); # 12時間前の時刻値を求めます。
print strftime("%Y/%m/%d %H:%M:%S", mktime()); # 文字列にしたい時
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 特定日時の時刻値(= 基準時刻からの経過秒数 = Unix Time)を調べます。
o 基準時刻は、通常、UTC(= 協定世界時)の1970年1月1日の0時です。閏秒は数えません。
o 詳しくは、「systime = 現在の時刻値(= 基準時刻からの経過秒数)を調べる」の通りです。
o 戻り値は、整数です。読み易い文字列に変換したい時には、strftimeを使います。
o この機能をサポートしていない処理系があります。
** 処理系に依存する動作
o この機能をサポートしている処理系は、次の通りです。
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
o この機能は、AWKのコンパイル環境によっては、2038年問題を抱えています。
o 2038年1月19日3時14分7秒を超える時刻を指定すると、-1を返す処理系
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
**** 確認した処理系
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
▼制作メモ
> srand = 乱数の種を設定する
strftime = 時刻を文字列に変換する(Gawk, mawk32専用)
+
systime = 現在の時刻値(= 基準時刻からの経過秒数)を調べる(Gawk, mawk32専用)
ツール。systime関数とsrand関数の戻り値予想(Unix time)
(2010年6月23日追加。戻り値の内容はAWKの仕様外)