Next: , Previous: , Up: オペレーティングシステムのインターフェース   [Contents][Index]


42.10 時間の計算

以下の関数はtime値を使用して暦計算を行います(時刻を参照)。これらの関数でtime値を受け取るすべての引数では、他のtime値と同じようにnil値はカレントシステム時刻、有限の数値はエポックからの経過秒数を意味します。

Function: time-less-p t1 t2

これはtime値t1がtime値t2より小ならtをリターンする。

Function: time-equal-p t1 t2

この関数は2つのtime値t1t2等しければtをリターンする。引数のいずれかがNaNの場合は結果はnilとなる。比較という目的のために、nilの引数は無限大の解像度によるカレント時刻を表すので、呼び出し側は任意のタイムスタンプと等しくならない未知のtime値としてnilを使うことができる。したがって一方の引数がnilでもう一方がnilでなければこの関数はnilをリターンする。

Function: time-subtract t1 t2

これは2つのtime値の差t1 - t2をLispタイムスタンプとしてリターンする。結果は正確であり、そのクロック解像度が2つの引数の解像度より劣ることはない。経過秒の単位の差が必要なら、time-convertfloat-timeで変換できる。時刻の変換を参照のこと。

Function: time-add t1 t2

これはtime-subtractのようないくつかの変換ルールを使用して、2つのtime値の和をtime値としてリターンする。ここで引数のうち1つはある時点での時刻ではなく時間差を表すこと(time値は経過秒数という単一の数値であることがよくある)。以下はあるtime値に秒数を加算する方法:

(time-add time seconds)
Function: time-to-days time-value

この関数はAC. 1年元日からtime-valueまでの間の日数をデフォルトタイムゾーンとみなしてリターンする。timeの範囲およびzoneの値はオペレーティングシステムが制限する。

Function: days-to-time days

これはtime-to-days関数の完全な逆バージョンではない。歴史的な理由によりAC.1年ではなくEmacsのエポックを使用するからである。逆バージョンとしての結果を得るにはdaysから(time-to-days 0)を減じる。この場合には、daysが負だとdays-to-timenilをリターンするかもしれない。

Function: time-to-day-in-year time-value

これはtime-valueに対応する年内の日数をデフォルトタイムゾーンとみなしてリターンする。timeの範囲およびzoneの値はオペレーティングシステムが制限する。

Function: date-leap-year-p year

この関数はyearが閏年ならtをリターンする。

Function: date-days-in-month year month

yearmonthの日数をリターンする。たとえば2020年2月は29日。

Function: date-ordinal-to-time year ordinal

yearの序数日ordinalをデコード済みtime構造体としてリターンする。たとえば2004年の120日目は2004年4月29日。