Next: Time Parsing, Previous: Time Zone Rules, Up: System Interface [Contents][Index]
以下の関数はtime値(Time of Dayを参照)を暦情報に変換したり逆の変換を行います。
32ビットオペレーティングシステムの多くは、秒数コンポーネントに32ビット情報を含んだシステム時刻に制限されます。これらのシステムは通常は万国標準時の1901-12-13 20:45:52から2038-01-19 03:14:07までの時刻だけを処理します。しかし64ビット、およびいくつかの32ビットオペレーティングシステムは、より大きな秒数コンポーネント値をもち、より遠い過去や未来の時刻を表現できます。
時刻変換関数は、たとえグレゴリオ暦導入前の日付にたいしても常にグレゴリオ暦を使用します。年はB.C. 1年から年数を数えて伝統的なグレゴリオ年が行うように0年をスキップしません。たとえば年数-37はグレゴリオ年のB.C. 38年を表します。
この関数はtime値を暦情報に変換する。timeを指定しなければカレント時刻をデコードする。同様にzoneのデフォルトはカレントのタイムゾーンルール。Time Zone Rulesを参照のこと。リターン値は以下のような9要素のリスト:
(seconds minutes hour day month year dow dst utcoff)
以下は各要素の意味:
0から59までの整数で表した分を過ぎた時分秒の秒。いくつかのオペレーティングシステムでは閏秒にたいして60となる。
0から59までの整数で表した時を過ぎた時分秒の分。
0から23までの整数で表した時分秒の時。
1から31までの整数で表した年月日の日。
1から12までの整数で表した年月日の月。
通常は1900より大きい整数で表した年月日の年。
0から6までの整数で表した曜日であり0は日曜日を意味する。
夏時間が有効ならt
、それ以外はnil
。
万国標準時からの秒数、すなわち東グリニッジの秒数を示す整数。
Common Lispに関する注意: Common Lispではdowとutcoffの意味が異なる。
この関数はdecode-time
の逆バージョン。これは7アイテムの暦データを整数リストのtime値に変換する。引数の意味は上述decode-time
のテーブルを参照のこと。
100未満の年が特別に扱われることはない。これに1900や2000を超える年を意味させたい場合には、encode-time
を呼び出す前に自身でこれらを修正しなければならない。
オプション引数zoneのデフォルトは、カレントのタイムゾーンルール。Time Zone Rulesを参照のこと。通常のタイムゾーンルール値に加えて(decode-time
で得られるような)リスト、(decode-time
で得られるような)整数も夏時間による更なる変更を受けずに適用される。
encode-time
にたいして7個より多い引数を渡すと最初の6つはsecondsからyear、最後の引数がzoneとして使用されてその間の引数は無視される。これにより以下のようにdecode-time
がリターンしたリストの要素をencode-time
の引数として使用することが可能になる:
(apply 'encode-time (decode-time …))
seconds、minutes、hour、day、monthの引数に範囲外の値を使用することにより単純な日付計算ができる。たとえばdayが0なら与えられたmonthの前月末日になる。
オペレーティングシステムは可能なtime値の範囲に制限を設ける。範囲外の時刻のエンコードを試みると結果はエラーとなる。たとえばあるシステムでは1970年以前では機能せず、別のシステムではより以前の1901年以降から機能する。