Logicoolゲーミングマウスのマクロ作成において、日時を取得する関数についてご紹介していきます。
日時が取得できると、~秒以上ボタンが押されているか、XX時XX分になったか、などの色々な判定ができ、ボタンの長押しやドラッグ&ドロップ、タイマーの判定処理などに使えます。
日時を取得するGetDate関数について
Logicoolゲーミングマウスのマクロ(スクリプト)で日時を取得するには GetDate 関数を使います。
スクリプトは Lua と呼ばれるプログラミング言語を使って記述しますが、GetDate 関数は Lua における os.date 関数と同じです。本記事でも使い方について解説しますが、もし不明な点があれば "Lua os.date" で検索すると、探している情報が見つかるかもしれません。
GetDate関数の書式
GetDate 関数の書式は以下の通りです。
GetDate( format[, time] )
format パラメータ
format には、GetDate 関数で取得する文字列の形式を指定します。
以下は format に指定できるパラメータの例です。
パラメータ | 取得できる文字列 |
---|---|
%Y | 4桁の西暦(例:2019) |
%y | 西暦の末尾2桁(例:19) |
%m | 2桁の月(例:01,02,・・・,11,12) |
%d | 2桁の日(例:01,02,・・・,30,31) |
%H | 2桁の時[24時間表記](例:00,02,・・・,22,23) |
%I | 2桁の時[12時間表記](例:00,02,・・・,10,12) |
%M | 2桁の分(例:00,01,・・・,58,59) |
%S | 2桁の秒(例:00,01,・・・,58,59) |
%a | 曜日[省略形](例:Sun,Mon,・・・,Fri,Sat) |
%A | 曜日[完全形](例:Sunday,Monday,・・・,Friday,Saturday) |
time パラメータ
time には文字列に変換したい UNIX時間を指定します。
何も指定しなければ現在の日時を文字列に変換します。
実行例
以下は 2019年4月26日 20時26分24秒 に様々なパラメータで GetDate 関数を実行した場合の例です。
GetDate()
04/26/19 20:26:24 ←現在時刻がデフォルトフォーマットで取得できる
GetDate( "%Y/%m/%d %H:%M:%S" )
2019/04/26 20:26:24 ←現在時刻が指定したフォーマットで取得できる
GetDate( "%Y/%m/%d %H:%M:%S", 0 )
1970/01/01 09:00:00 ←指定したUNIX時間が指定したフォーマットで取得できる
※UNIX時間は協定世界時 (UTC) での 1970年1月1日午前0時0分0秒からの経過秒数を表します。したがって、time に指定した 0 は 1970年1月1日午前0時0分0秒(UTC)を示し、日本時間(JST)では 1970年1月1日午前9時0分0秒となります。
GetDate( nil, 0 )
01/01/70 09:00:00 ←指定したUNIX時間がデフォルトフォーマットで取得できる
※time パラメータを指定する場合に format パラメータを省略したい場合は、format に nil を指定します。
特殊な使い方(テーブルでの取得)
GetDate 関数は時刻を文字列で返してくれる関数ですが、format に "*t" を指定すると、年月日や時分秒などが格納されているテーブルを返してくれます。
テーブルにはキーと値がセットで格納されており、[テーブルを格納した変数名].[キー] で各値を取得することができます。
テーブルのキーと取得できる情報には以下のようなものがあります。
キー | 取得できる情報 | 型 |
---|---|---|
year | 年(西暦) | number |
month | 月 | number |
day | 日 | number |
hour | 時 | number |
min | 分 | number |
sec | 秒 | number |
wday | 曜日を表す数値(日曜日:1,月曜日:2,・・・,金曜日:6,土曜日:7) | number |
yday | 1月1日から数えた日数 | number |
以下は現在の日時をテーブルで取得し、年月日と時分秒を表示するサンプルです。
dateTable = GetDate( "*t" );
OutputLogMessage("Year=%d\n", dateTable.year );
OutputLogMessage("Month=%d\n", dateTable.month );
OutputLogMessage("Day=%d\n", dateTable.day );
OutputLogMessage("Hour=%d\n", dateTable.hour );
OutputLogMessage("Minitute=%d\n", dateTable.min );
OutputLogMessage("Second=%d\n", dateTable.sec );
例えば、2019年4月28日 15時44分43秒に実行すると以下のように出力されます。
Year=2019
Month=4
Day=28
Hour=15
Minute=44
Second=43
まとめ
今回は Logicool ゲーミングマウスのマクロ(スクリプト)で日時を扱う方法をご紹介させていただきました。ポイントは以下の通りです。
- 日時を取得するには GetDate( format[, time] ) を使う
- format には日時を取得する形式を指定する(省略する場合は nil を指定する)
- time には取得したい UNIX時間を指定する(省略すると現在の日時が取得できる)
- format に"*t"を指定すると年月日、時分秒がテーブルで取得でき、[テーブルを格納した変数名].[キー] で値を取得できる
機会がありましたら、実際に GetDate関数を使ってボタンの長押しやドラッグ&ドロップ、タイマーの判定処理などを行うサンプルなども後日ご紹介させていただきます。
Logicoolゲーミングマウスのマクロ(スクリプト)関連ページ一覧
皮脂や唾、手垢、汗などで表面は見えない雑菌だらけです。 衛生上も問題ですし、気持ち良く使うためにも、こまめに拭きとってキレイにしましょう。