これらの関数は、時刻値(時刻を参照)を用いて暦計算を行います。他の時刻値と同様に、時刻値引数のいずれかに nil が指定された場合は現在のシステム時刻を、有限の数値が指定された場合はエポックからの経過秒数を表します。
時刻値 t1 が時刻値 t2 より小さい場合、t を返します。
2つの時刻値 t1 と t2 が等しい場合、t を返します。いずれかの引数が NaN である場合、結果は nil となります。比較においては、nil
引数は無限の分解能を持つ現在時刻を表すため、一方の引数が nil で他方がそうでない場合、この関数は
nil を返します。したがって、呼び出し側は nil を用いて、いかなるタイムスタンプとも等しくない未知の時刻値を表すことができます。
この関数は、2つの時刻値の時間差 t1 − t2
をLispのタイムスタンプとして返します。結果は厳密であり、クロック分解能は2つの引数のうち低い方の分解能を下回ることはありません。経過秒単位での差が必要な場合は、time-convert または float-time
を用いて変換できます。時刻変換を参照してください。
これは、time-subtractと同じ変換ルールを用いて、2つの時刻値の和を返します。時刻値は多くの場合、単に経過秒数という単一の数値であるため、1つの引数は特定の時点ではなく、時刻の差を表す必要があります。時刻値に秒数を加算する方法は以下の通りです。
(time-add time seconds)
この関数は、デフォルトのタイムゾーンを想定して、1年の初めからtime-valueまでの日数を返します。オペレーティングシステムによって、時刻およびタイムゾーンの値の範囲が制限されています。
これは厳密には time-to-days
関数の逆関数ではありません。歴史的な経緯から、(1年ではなく)Emacsエポックを使用しているためです。逆関数を求めるには、days から (time-to-days 0)
を減算します。この場合、days が負であれば、days-to-time は nil を返すことがあります。
デフォルトのタイムゾーンを想定し、time-valueに対応する年内の日数を返します。オペレーティングシステムにより、時刻およびゾーン値の範囲が制限されています。
この関数は、year が閏年である場合に t
を返します。
month の日数を year に返してください。例えば、2020年2月は29日です。
year 内の ordinal の日付を、デコード済みの時刻構造として返します。例えば、2004年の120日目は4月29日です。
指定された delay(秒単位)を説明する文字列を返します。デフォルトでは、この関数は delay の値に応じて選択された単位を用いて、返される文字列を浮動小数点数としてフォーマットします。例えば、遅延が
9861.5 秒の場合、delay の値は 1 時間より長く 1 日より短いため、‘2.74h’ が返されます。出力フォーマットは、オプション引数 readable が nil
以外である場合、オプション引数によってさらに制御できます。readable の値が expanded である場合、返される文字列は 2 つの単位を用いて delay を記述します。例えば、遅延が 9861.5 秒で readable に記号 expanded
が設定されている場合は ‘2 hours 44 minutes’
が返されますが、readable が t
である場合、関数は ‘3 hours’ を返します。オプション引数 abbrev が nil
以外である場合は、単位を省略することを意味します。つまり、‘hours’
の代わりに ‘h’ を、‘minutes’ の代わりに ‘m’ を使用するといった具合です。precision
が整数である場合、関数は生成される最小単位の値を小数点以下その桁数で丸めます。したがって、precision が 3 に設定されている 9861.5 の場合は ‘2.739 hours’ が返されます。precision が 1 より小さい非負の浮動小数点数である場合、関数はその値に丸めます。