コンテンツにスキップ

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

関連項目