基準日に日数を加算した値を返します。GETTIME関数を実行すると特殊変数(G_TIME_*)に値が格納されます。月や年など日数が定まらないものについてはdateAdd関数 (自作関数)を使います。
- 構文
- Double = GETTIME( ±n日, 基準日 )
- 引数
- ±n日 (Single = 0)省略可
- nを指定すると当日もしくは基準日からプラスマイナス n日とする、小数点以下は時間(デフォルト=0)
- 基準日 (String = "")省略可
- 指定された日付を基に日付を設定する (デフォルト=当日)
(YYYYMMDD or YYYY/MM/DD or YYYY-MM-DD or YYYYMMDDHHNNSS or YYYY/MM/DD HH:NN:SS)
- 戻り値
2000年1月1日からの秒数を返す
値がセットされる特殊変数
- G_TIME_YY
- 年
- G_TIME_MM
- 月
- G_TIME_DD
- 日
- G_TIME_HH
- 時
- G_TIME_NN
- 分
- G_TIME_SS
- 秒
- G_TIME_ZZ
- ミリ秒
- G_TIME_WW
- 曜日 (0:日曜....6:土曜)
- G_TIME_YY2
- 年をxxの文字型
- G_TIME_MM2
- 月をxxの文字型
- G_TIME_DD2
- 日をxxの文字型
- G_TIME_HH2
- 時をxxの文字型
- G_TIME_NN2
- 分をxxの文字型
- G_TIME_SS2
- 秒をxxの文字型
- G_TIME_ZZ2
- ミリ秒をxxxの文字型
- G_TIME_YY4
- 年をxxxxの文字型
特殊変数
特殊変数(G_TIME_*)には1899/12/30(土) 00:00:00.000が初期値として代入されていて、GETTIME関数実行前は以下のような結果を返します。コメントに特殊変数の型も示しておきます。
- 結果
GETTIME()を実行すれば、実行したときの日時が特殊変数にセットされます。
- 結果
年, 2026 月, 9 日, 17 時, 12 分, 9 秒, 28 ミリ秒, 482 曜日, 4 年2桁, 26 月2桁, 09 日2桁, 17 時2桁, 12 分2桁, 09 秒2桁, 28 ミリ秒3桁, 482 年4桁, 2026
G_TIME_*の*(アスタリスク)の部分には、日時を表す英語の頭文字を2つ重ねて入れます。
| 特殊変数 | 英語 |
|---|---|
| YY | Year |
| MM | Month |
| DD | Day |
| HH | Hour |
| NN | Minute。MMだとMonthで重複するため2つ目の子音であるN。 |
| SS | Second |
| ZZ | なぜZZかは不明。 |
| WW | Weekday |
特殊変数の中でG_TIME_YY4やG_TIME_MM2のように末尾に数字がつくものは文字列型で、それ以外は数値型です。数字は取得する値の文字数を表していますが、G_TIME_ZZ2だけは3桁で一致しないことに注意。
例えば2024/12/25をyyyymmddの形式にしたい場合、以下のように書くと加算演算子の両オペランドが数値型なので結合ではなく加算されてしまいます。
以下は、2061(=2024+12+25)が出力されます。
- 結果
GETTIME関数の特殊変数には文字列型があるので、結合させたいときはそれらを使います。
- 結果
特殊変数のスコープ
特殊変数はグローバル変数ではなくローカル変数のため、GETTIME関数でセットされた値はその関数内でのみ有効です。
- 結果
日付
G_TIME_YY・G_TIME_MM・G_TIME_DDで数値型の年・月・日、G_TIME_YY4・G_TIME_YY2・G_TIME_MM2・G_TIME_DD2で文字列型の年・月・日を取得できます。
- 結果
年
G_TIME_YY2は西暦の下2桁を返します。
- 結果
曜日
G_TIME_WWで曜日を表す整数(0:日曜~6:土曜)を取得できます。
| 値 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| 曜日 | 日曜 | 月曜 | 火曜 | 水曜 | 木曜 | 金曜 | 土曜 |
以下は2024/01/01の曜日を取得します。結果が1なので対応する曜日は月曜になります。
- 結果
曜日番号ではなく文字列として取得したい場合は、getWeekdayName関数 (自作関数)を使います。
- 結果
時刻
G_TIME_HH・G_TIME_NN・G_TIME_SS・G_TIME_ZZで数値型の時・分・秒・ミリ秒、G_TIME_HH2・G_TIME_NN2・G_TIME_SS2・G_TIME_ZZ2で文字列型の時・分・秒・ミリ秒を取得できます。
GETTIME関数の第二引数(基準日)にミリ秒を指定することはできないため、基準日のみを指定した場合G_TIME_ZZ・G_TIME_ZZ2が返す値は常に0・000になります。
- 結果
ミリ秒
G_TIME_ZZは数値型、G_TIME_ZZ2は文字列型3桁でミリ秒を取得します。1000ミリ秒=1秒です。
- 結果
GETTIME関数は2000年1月1日からの経過時間を秒単位で取得しますが、GETTIME()にG_TIME_ZZを加えることで経過時間をミリ秒単位で取得することができます。
GETTIME()は秒単位、G_TIME_ZZはミリ秒単位なので、単位を揃える必要があります。
G_TIME_ZZを1000で割ってからGETTIME()に加算すると秒単位で取得できます。
- 結果
842962168.540秒
GETTIME()に1000を掛けてからG_TIME_ZZを加算するとミリ秒単位で取得できます。
- 結果
842962168543ミリ秒
基準日
基準日はYYYYMMDD,YYYY/MM/DD,YYYY-MM-DD,YYYYMMDDHHNNSS,YYYY/MM/DD HH:NN:SSのいずれかの形式で指定します。これらの形式以外で記述したときは、予期しない結果になることがあります。
例えば基準日に999/01/01とyyy/mm/ddの形式で指定した場合、特殊変数の値を見ると9990/10/1が指定されたものとして処理されます。
- 結果
時刻部分についても同じでh:nn:ssの形式で指定した場合、特殊変数では12:34:5となります。
- 結果
加算日時の指定方法
GETTIME関数の第一引数は日単位で指定します。そのため指定する時間が日単位以外の場合、事前に変換する必要があります。
時間単位、分単位、秒単位、ミリ秒単位を日単位にするための式を求めるために、まず1日を各単位にした時間を計算します。
\[ \begin{eqnarray} 1日&=&24時間\\ &=&24 \times 60分=1440分\\ &=&1440 \times 60秒=86400秒\\ &=&86400 \times 1000ミリ秒=86400000ミリ秒 \end{eqnarray} \]
上の4つの式をそれぞれ変形することで、日単位への変換式を求めることができます。
- 時間単位
- \[ \begin{eqnarray} 1日&=&24時間\\ 1時間&=&\frac{1}{24}日 \end{eqnarray} \]
- 分単位
- \[ \begin{eqnarray} 1日&=&1440分\\ 1分&=&\frac{1}{1440}日 \end{eqnarray} \]
- 秒単位
- \[ \begin{eqnarray} 1日&=&86400秒\\ 1秒&=&\frac{1}{86400}日 \end{eqnarray} \]
- ミリ秒単位
- \[ \begin{eqnarray} 1日&=&86400000ミリ秒\\ 1ミリ秒&=&\frac{1}{86400000}日 \end{eqnarray} \]
\(1時間=\frac{1}{24}日\)なので、両辺に2を掛けて\(2時間=\frac{2}{24}日\)、両辺に5を掛けて\(5時間=\frac{5}{24}日\)のように求めることができます。
これをGETTIME関数の第一引数に指定することで、現在時刻から2時間後、5時間後を求めることができます。
- 結果
842969368 842980168
このとき時間をわかりやすくするため、\(\frac{2}{24}\)を\(\frac{1}{12}\)のように約分はしない方が良いです。
また3つの式を変形せずに、比例式を使って求める方法もあります。
まず比例式は、比例式の性質により以下のような計算式に変形できます。
\[ \begin{eqnarray} a:b&=&c:d\\ ad&=&bc \end{eqnarray} \]
比例式の左辺a:bに日単位に変換したい時間単位(1日:24時間、1日:1440分、1日:86400秒、1日:86400000ミリ秒のいずれか)の換算式、右辺のdに日単位に変換したい時間を指定し、cについて求めます。
以下は10分を日単位に変換する例です。変換元が分単位なので左辺は1日:1440分、右辺のdに10分を代入してxを求めます。
\[ \begin{eqnarray} 1日:1440分&=&x日:10分\\ 1:1440&=&x:10\\ 1440x&=&10\\ x&=&\frac{10}{1440} \end{eqnarray} \]
35秒を日単位に変換するには以下のようになります。変換元が秒単位なので左辺は1日:86400秒、右辺のdに35秒を代入してxを求めます。
\[ \begin{eqnarray} 1日:86400秒&=&x日:35秒\\ 1:86400&=&x:35\\ 86400x&=&35\\ x&=&\frac{35}{86400} \end{eqnarray} \]
これを先ほどと同じようにGETTIME関数の第一引数に指定することで、現在時刻から10分後、35秒後を求めることができます。
GETTIME関数の第一引数の符号をマイナスにすることで過去にすることができます。
現在時刻から10分前、35秒前を求めるには以下のように指定します。
複数の時間単位があるとき
2分30秒後を日単位に変換するときは、2分・30秒をそれぞれ日単位に変換してから加算、もしくはどちらかの単位(分か秒)に統一してから指定します。
以下は2分、30秒をそれぞれ日単位に変換してから指定した例。
2分30秒を分単位、秒単位に揃えてから指定するには、以下のように求めます。
2分30秒を分単位にするには、30秒を60で割れば良いので30秒=30/60分=0.5分。2分を加算して2分30秒=2.5分。
2分30秒を秒単位にするには、2分に60を掛ければ良いので2分=2×60秒=120秒。30秒を加算して2分30秒=150秒。
計算方法がわからない場合は、convert関数を使って変換してください。変換前単位は秒ならばsec、分ならばmn、時間ならばhr、変換後単位は日なので第三引数はdayで固定です。
convert関数を使うと8時間後、20分後、5秒後はそれぞれ以下で日単位になります。
8時間20分後は以下のようになります。
使い方
2000年1月1日からの経過時間を取得(秒単位)
引数を省略した場合2000年1月1日から現在時刻までの経過時間(単位:秒)が戻り値として返ります。
- 結果
842962168秒
2000年1月1日からの経過時間を取得(ミリ秒を含む)
2000年1月1日から現在時刻までの経過時間(単位:秒)をミリ秒も含めて取得します。GETTIME関数を実行した時点のミリ秒単位の時刻がG_TIME_ZZ(単位:ミリ秒)にセットされるので、1000で割り秒単位に揃えてからGETTIME()に加算します。
- 結果
842962168.581秒
2000年1月1日から指定日時までの経過時間を取得
2000/01/01 00:00:00から第二引数に指定した日時である2024/01/24 01:56:00までの経過時間(単位:秒)を取得します。
- 結果
指定した2つの日時の間隔を求める
2つの日時の間隔は以下のプログラムで求めることができます。
以下は2024/01/24 04:00:00(終日時)から2024/01/24 00:00:00(始日時)を引いた時間(単位:秒)を求める例です。結果の14400は秒単位で時間単位に直すと4時間となります。
- 結果
指定日時から現在時刻までの経過時間を求める(カウントアップタイマー)
2つの日時の間隔を求めるプログラムの終日時(現在時刻)を省略すると現在の日時を指定したことになり、指定日時から現在の日時までの経過時間を求めることができます。
現在の日時から始日時を減算しています。
以下は、2020年東京オリンピックの開会式の日時(2021/07/23 20:00:00)から現在時刻までの経過秒数を求めています。
- 結果
162576568秒
経過時間をd日hh時間nn分ss秒の形式にするには、以下のように86400(=24×60×60)で割り秒単位を日単位にして求めます。serialの整数部分が経過日数、小数部分にtext関数 (自作関数)を使って経過時間を求めています。
以下は引数に指定した日時からの経過時間をリアルタイムで表示するcountUpTimer関数です。d日hh時間nn分ss秒形式で吹き出しに表示します。無限ループになるのでESCで処理を強制終了します。
現在の日時から指定日時までの残り時間を求める(カウントダウンタイマー)
経過時間を求めるときと逆で始日時を現在の日時とすれば良いので、2つの日時の間隔を求めるプログラムの終日時のみ指定することで残り時間を求めることができます。
指定日時を過ぎると減数のほうが大きくなるので結果はマイナス値になります。
以下は、2038年問題の発生日時(2038年1月19日12時14分8秒)までの残り時間を求める例です。
- 結果
357836680秒
以下は引数に指定した日時までの残り時間をリアルタイムで表示するcountDownTimer関数です。d日hh時間nn分ss秒形式で吹き出しに表示し、指定日時を過ぎるもしくはESCで処理を強制終了します。
時間になったときに音を鳴らすには以下のように記述します。素材は料理・台所の音〜フリー効果音・無料効果音素材のキッチンタイマー(kitchen_timer)を使っています。MP3ファイルはスクリプトと同じフォルダに置いてください。
日時に日数を加算
第二引数に指定した日時2024/01/24 04:19:30に第一引数の日数7日を加算します。
- 結果
yyyy/mm/dd hh:nn:ss形式で出力するときdateAdd関数 (自作関数)の第二引数にGETTIME関数を指定すると、特殊変数を並べて書かずに1行で同じ結果を出力することができます。
加算結果が00:00:00のときは時刻部分が省略されyyyy/mm/dd形式になります。
2024/01/24 04:19:30に7日を加算するプログラムは以下のように書き換えられます。
- 結果
今日の日付を出力
GETTIME関数を実行すると基準日(第二引数)にn日(第一引数)を加算した日時が特殊変数(G_TIME_*)にセットされます。引数を省略した場合は現時点の日時がセットされるのでこの特殊変数から今日の日付を取得します。
- 結果
2026/09/17
今日の日付を取得するのであれば、特殊変数を並べる処理を関数化したtoday関数 (自作関数)の方が簡潔に書けます。
- 結果
2026/09/17
日時から日付・時刻部分を取り出す
GETTIME関数の第二引数に日時を指定すると特殊変数に日付時刻の各要素に代入されるので、必要な部分を取り出します。
- 結果
プログラム実行例
1週間後の日付を出力
現在の日時から1週間後の日時を求めます。
- 西暦年号が4で割り切れる年はうるう年
- 西暦年号が4で割り切れる年のうち100で割り切れる年は平年だが、400で割り切れる年はうるう年
1時間前の日時を出力
現在の日時から1時間前の日時を求めます。
今年の残りの日数を求める
今年がうるう年かどうか(計算)
グレゴリオ暦において、うるう年は以下の条件を満たす年となります。
例えば2024年、2028年はうるう年(4で割り切れる)。1800年、1900年は平年(100で割り切れる)、2000年、2400年はうるう年(400で割り切れる)となります。
これらの条件を[createLink url="/script/syntax/control/ifb-endif/"]を使い、うるう年かを判定します。
プログラム実行時からの経過時間を表示(ESCで終了)
指定期間のメールを日毎に集計(Outlook)
今年の干支を取得
古いキャッシュファイルを削除する
Localフォルダ(C:\Users\username\AppData\Local\Temp \)にあるファイルの最終更新日時が7日以上前のファイルをごみ箱に移動します。
関連記事
- now関数 (自作関数)
- 現在の日時のシリアル値を返します。
- getHour関数 (自作関数)
- 指定された時間の時を返します。
- getMinute関数 (自作関数)
- 指定された時間の分を返します。
- getSecond関数 (自作関数)
- 指定された時間の秒を返します。
- getSerialTime関数 (自作関数)
- UWSC時間からシリアル値を取得します。
- getUNIXTime関数 (自作関数)
- 引数に指定した日時のUNIX時間を取得します。
- uwscToSerial関数 (自作関数)
- UWSC時間をシリアル値に変換します。
- uwscToUNIX関数 (自作関数)
- UWSC時間をUNIX時間に変換します。
- serialToUNIX関数 (自作関数)
- シリアル値をUNIX時間に変換します。
- UNIXToUwsc関数 (自作関数)
- UNIX時間をUWSC時間に変換します。
