システム情報†
7 個の関数。
GETTIME†
書式†
GETTIME( [ sec [, timezone ] ] )
引数†
| Parameter | Description |
|---|---|
| sec | (省略可)EPOCH(1970年1月1日 00:00:00 UTC)からの経過秒数(整数)。省略時は現在のシステム時刻を返す |
| timezone | (省略可)日時を求めるタイムゾーン。省略時はOSのローカルタイム(タイムゾーンの指定) |
戻り値†
以下の構造を持つ汎用配列:
| インデックス | 値 | 詳細 |
|---|---|---|
| 0 | 年 | 西暦 |
| 1 | 月 | 月 |
| 2 | 日 | 日 |
| 3 | 曜日 | 0〜6(0=日曜日) |
| 4 | 時 | 24時間表記 |
| 5 | 分 | 分 |
| 6 | 秒 | 秒 |
| 7 | 年内経過日数 | 年始からの経過日数(1月1日が0) |
| 8 | 夏時間フラグ | 0=標準時 / 1=夏時間 |
sec が扱える範囲(約±9億年)を超えているときは、警告 W0012(GETLASTERROR は 12)を出して -1 を返す。
解説†
現在の日付・時刻情報を取得する。timezone を省略したときは、C言語の localtime 関数と同等の動作をする。
sec を指定した場合はその秒数をEPOCHからの経過時間として解釈し、対応する日時情報を返す。GETSECCOUNTと組み合わせることで、例えば10日後の日付を計算するといった用途に使える。
ローカルタイムの夏時間は、sec の時点の規則で判定する(今の時刻の夏時間かどうかではない)。
タイムゾーンの指定†
timezone には次のいずれかを指定する。
| 指定 | 意味 |
|---|---|
省略、""、"local" |
OSのローカルタイム |
"UTC"、"GMT"、"Z" |
UTC |
"+09:00"、"+0900"、"+09"、"-5" |
UTCからの固定のオフセット(時間・分。東が正) |
"JST"、"EST"、"EDT"、"CST"、"CDT"、"MST"、"MDT"、"PST"、"PDT" |
名前で固定のオフセット |
| 整数 | UTCからの固定のオフセット(秒、東が正。32400 は +09:00)。±24時間未満 |
固定のオフセットを指定したときは夏時間を考慮せず、夏時間フラグ(インデックス8)は常に0になる。解釈できない指定は警告 W0012(GETLASTERROR は 12)を出し、ローカルタイムとして扱う。
使用例†
現在時刻の sec は GETSECCOUNT で取得できる。これを活用すると、「今現在から○日後 / 前の時刻」を手軽に計算できる。
//10日後は何月何日?
_array = GETTIME()
"今は%(_array[0])年%(_array[1])月%(_array[2])日 %(_array[4])時%(_array[5])分%(_array[6])秒/"
--
_array = GETTIME(GETSECCOUNT(_array[0],_array[1],_array[2] + 10,0,_array[4],_array[5],_array[6]))
"10日後は%(_array[0])年%(_array[1])月%(_array[2])日 %(_array[4])時%(_array[5])分%(_array[6])秒\n"
// UTCでの日時
_utc = GETTIME(GETSECCOUNT(), 'UTC')
// 1970/1/1 00:00:00 UTC は、日本時間(+09:00)では 9時
_jst = GETTIME(0, '+09:00') // 1970,1,1,4,9,0,0,0,0
互換性†
- YAYA: 初期から利用可能
- Tc542-1以降: 年内経過日数(インデックス7)と夏時間フラグ(インデックス8)が追加
- Tc606-1以降:
timezoneパラメータが追加
- Tc606-1: Windowsで年内経過日数が1月1日を1として数えていたのを、
localtimeと同じ0始まりに修正。夏時間フラグと、夏時間が時期によって違うタイムゾーンでの時刻を、今ではなくsecの時点で判定するようにした - AYA 5.8: 引数なしのみサポート
関連項目†
GETTIMEZONE†
書式†
GETTIMEZONE( [ sec ] )
引数†
| Parameter | Description |
|---|---|
| sec | (省略可)EPOCH(1970年1月1日 00:00:00 UTC)からの経過秒数(整数)。省略時は現在のシステム時刻 |
戻り値†
以下の構造を持つ汎用配列:
| インデックス | 値 | 詳細 |
|---|---|---|
| 0 | UTCからのオフセット | 秒。東が正(日本は 32400)。夏時間のときは夏時間を含めた値 |
| 1 | 夏時間フラグ | 0=標準時 / 1=夏時間 |
| 2 | 名前 | Windows: OSの表示名(日本語環境なら 東京 (標準時))。Linux / macOS: 略称(JST、EDT など) |
| 3 | IANAの名前 | Asia/Tokyo のような名前。取得できないときは空文字列(GETSETTING の coreinfo.timezone と同じ) |
sec が扱える範囲(約±9億年)を超えているときは、警告 W0012(GETLASTERROR は 12)を出して -1 を返す。
解説†
OSのローカルタイムゾーンについて、sec の時点での情報を返す。夏時間があるタイムゾーンでは、夏時間かどうか・オフセットは sec の時点の規則で決まる。
インデックス0のオフセットは、GETTIME / GETSECCOUNT がローカルタイムとして扱うときの差と同じ。
- Windows: IANAの名前は、OSのタイムゾーン名(
Tokyo Standard Time)をICU(icu.dll、Windows 10 1903 以降)で変換して求める。それより古いWindowsでは空文字列。複数のIANA名に対応するWindowsのタイムゾーンは、代表的な名前になる(Pacific Standard TimeはAmerica/Los_Angeles) - Linux / macOS: IANAの名前は、環境変数
TZ、無ければ/etc/localtimeのリンク先(.../zoneinfo/Asia/Tokyo)、それも無ければ/etc/timezoneから求める。TZがJST-9のようなPOSIX形式のときは、その文字列がそのまま入る
使用例†
// 今のローカルタイムゾーン
_tz = GETTIMEZONE()
_tz[0] // 32400
_tz[3] // 'Asia/Tokyo'
// 夏時間のある地域で、ある日時のオフセット(秒)を求める
GETTIMEZONE(GETSECCOUNT(2024, 7, 1, 0, 12, 0, 0))[0]
互換性†
- YAYA: Tc606-1以降
関連項目†
GETTICKCOUNT†
書式†
GETTICKCOUNT( [ flag ] )
引数†
| Parameter | Description |
|---|---|
| flag | 現在は実質的な意味を持たない。歴史的には0以外の値を指定すると GetTickCount() >> 31 の第32ビット値を返し、長時間計測に使われていた |
戻り値†
OSが起動してからの経過時間(ミリ秒単位)
解説†
OSが起動してからの経過時間をミリ秒単位で返す。
Windows XP以前では約24日20時間で0にリセットされる。Vista以降や他のOSではその制約はない。
互換性†
- YAYA: 初期から利用可能
- AYA 5.8: 利用可能
関連項目†
GETSECCOUNT†
書式†
GETSECCOUNT( [yyyy|datetext [, mm [, dd [, wd [, HH [, MM [, SS [, timezone]]]]]]]] )
引数†
| Parameter | Description |
|---|---|
| yyyy | 西暦年(4桁) |
| mm | 月(1〜12) |
| dd | 日 |
| wd | 曜日(0を指定。どんな値でも無視される) |
| HH | 時 |
| MM | 分 |
| SS | 秒 |
| timezone | (省略可)指定した日時のタイムゾーン。省略時はOSのローカルタイム。書き方は GETTIME と同じ |
| datetext | 代替指定: 'Sun, 06 Nov 1994 08:49:37 GMT' や '2024-01-01T09:00:00+09:00' 形式の日付文字列 |
戻り値†
EPOCH(1970/1/1 00:00:00 UTC)から指定日時(または現在日時)までの経過秒数(数値)
解説†
EPOCHから現在時刻または指定日時までの経過秒数を返す関数。C言語のtime()関数に相当する。
- 引数をすべて省略した場合は現在時刻を使用する
- 一部を省略した場合、省略した値は
timezoneでの現在時刻の値で補完される - 値は通常の日付範囲外でもよい(例: 月に13を指定すると翌年の1月になる)
- 年月日などはローカルタイムとして解釈する。UTCや他のタイムゾーンの日時は、8番目の引数
timezoneで指定する(GETSECCOUNT(2024,1,1,0,0,0,0,'UTC'))。ローカルタイムの夏時間は、指定した日時の時点の規則で判定する
日付文字列†
datetext は次の形式を読める。HTTP 形式の曜日は省略してもよい。
Sun, 06 Nov 1994 08:49:37 GMT RFC 822 / RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT RFC 850(年が2桁のときは 70-99 が19xx、00-69 が20xx)
Sun Nov 6 08:49:37 1994 C の asctime
2024-01-01T09:00:00+09:00 ISO 8601
ISO 8601 は次の形を読む。
| 形 | 例 |
|---|---|
| 日付 | 2024-01-01(時刻は 00:00:00) |
| 日付と時刻 | 2024-01-01T09:30、2024-01-01T09:30:15、2024-01-01 09:30:15(T は小文字や空白でもよい) |
| 小数秒 | 2024-01-01T09:30:15.123(小数秒は切り捨てる) |
| タイムゾーン | Z、+09:00、+0900、+09、-05:00 |
| 基本形式 | 20240101、20240101T093015Z |
存在しない日付(2024-02-30)や範囲外の時刻(25:00)は読めない。24:00:00 は翌日の0時、秒の 60 は閏秒として扱う。
- 末尾にタイムゾーン(HTTP 形式なら
GMT、+0900、+09:00、-0500、JSTなど、ISO 8601 ならZや+09:00)があれば、その日時として読む。例のGMTの文字列は、実行環境のタイムゾーンによらず784111777になる - タイムゾーンが書かれていない日付文字列(asctime 形式、
2024-01-01T09:00:00など)は、ローカルタイムとして読む - 読めない文字列や、月の名前が不明なもの、存在しない日付は、警告 W0012(GETLASTERROR は 12)を出して
-1を返す。範囲外の値も同じ
使用例†
// 2006年14月25日 15:56:40 のEPOCH秒を取得し、GETTIMEで日付に変換する例
// (月14 = 翌年2月)
_array = GETTIME(GETSECCOUNT(2006, 14, 25, 0, 15, 56, 40))
"%(_array[1])月%(_array[2])日"
// 結果: "2007年2月25日" のように表示される
// UTCの日時から求める
_sec = GETSECCOUNT(2024, 1, 1, 0, 0, 0, 0, 'UTC') // 1704067200
// ISO 8601 の文字列から求める
_sec = GETSECCOUNT('2024-01-01T09:00:00+09:00') // 1704067200
互換性†
- YAYAの初期バージョンから使用可能
- Tc606-1以降: 8番目の引数
timezoneと、ISO 8601 の日付文字列が追加 - Tc606-1: 日付文字列に書かれたタイムゾーンを、ローカルタイムとして読んでしまい、日本時間では9時間ずれていたのを修正(
-0500のような負のオフセットと RFC 850 形式の2桁の年も、正しく読めていなかった)。読めない文字列は-1と警告になった。2100年以降が閏年として数えられていたのと、夏時間のあるタイムゾーンで日時を今の夏時間の規則で変換していたのも修正
関連項目†
GETMEMINFO†
書式†
GETMEMINFO()
引数†
なし(引数はありません)
戻り値†
動作環境のメモリ情報を格納した汎用配列(5要素):
| インデックス | 内容 |
|---|---|
| 0 | 物理メモリ使用率 |
| 1 | 物理メモリ総量 |
| 2 | 物理メモリ空き容量 |
| 3 | 仮想メモリ+物理メモリの総量 |
| 4 | 仮想メモリ+物理メモリの空き容量 |
解説†
動作環境のメモリ情報を取得する関数。
互換性†
- YAYA: 初期バージョンから使用可能
- AYA: バージョン5.8以降
GETENV†
書式†
GETENV( name )
引数†
| Parameter | Description |
|---|---|
| name | 取得したい環境変数名(文字列) |
戻り値†
- 成功: 環境変数の内容(文字列)
- 失敗: 空文字列
解説†
OSの環境変数を名前で取得する関数。指定した環境変数が存在しない場合は空文字列を返す。引数は省略できず、省略すると警告(W0008)を出して空文字列を返す。
なお、環境変数の設定関数は不用意に触ると危険なため、現状実装予定はない。
互換性†
- YAYA: Tc552-1 以降
READFMO†
Windows専用
この関数はWindows用にコンパイルされたyayaでしか動作しません。
書式†
READFMO( [ name ] [ , charset ] )
引数†
| Parameter | Description |
|---|---|
| name | (省略可)FMOの識別子。省略時は "Sakura" |
| charset | (省略可)文字エンコーディング(文字コードの名前)。省略時はOSのデフォルト。Tc569-13で追加。不正な値なら警告 W0012 を出して何も返さない |
戻り値†
- 成功: FMOの内容を文字列として返す
- 失敗: VOID(何も返さない)
解説†
ファイルマッピングオブジェクト(FMO)の内容を文字列として取得します。FMOの先頭4バイトはサイズを表す符号なし整数であり、読み取り時にはその4バイトが除去されます。FMO内にnullバイト(0x00)が存在する場合の動作は未定義です。
互換性†
- YAYA: バージョンTc524-1で導入
- Tc574-8 / Tc603-1: 知らない文字コードの名前や不正なIDを渡すと、警告 W0012 を出して何も返さないようにした(それまでは OS デフォルトとして読んでいた)