GETSECCOUNT¶
Category: システム情報
書式¶
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年以降が閏年として数えられていたのと、夏時間のあるタイムゾーンで日時を今の夏時間の規則で変換していたのも修正