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


41.5 時刻

このセクションではカレント時刻とタイムゾーンを決定する方法を説明します。

current-timefile-attributesのような多くの関数は秒をカウントするLispタイムスタンプ(Lisp timestamp)値をリターンします。この値は1970-01-01 00:00:00 UTCというエポック(epoch)からの経過秒数をカウントすることにより絶対時刻を表すことができます。

伝統的なLispタイムスタンプが整数のペアであったとしても、それらの形式は進化しており、プログラムは通常はカレントのデフォルト形式に依存するべきではありません。プログラムに特定のタイムスタンプ形式が必要なら、time-convert関数を使用して必要とする形式に変換できます。時刻の変換を参照してください。

現在のところ3つのLispタイムスタンプ形式があり、それぞれが秒数を表します:

関数の引数(current-time-stringtime引数)には、より一般的なtime値(time value)のフォーマット(Lispタイムスタンプ、カレント時刻にたいするnil、秒にたいする単精度浮動小数点数、欠落要素を0に切り詰めたタイムスタンプリスト(high low micro) )が許されています。

time値は暦形式や他形式に相互に変換できます。これらの変換のいくつかは利用可能なtime値範囲を制限するオペレーティングシステム関数に依存しており、その制限を超えると‘"Specified time is not representable"’のようなエラーをシグナルします。たとえばあるシステムでは1970年や1901年より前のタイムスタンプ、あるいは遠い将来の年をサポートしないかもしれません。format-time-stringを使用して可読性のある文字列、time-convertを使用してLispタイムスタンプ、decode-timefloat-timeを使用して別の形式にtime値を変換できます。これらの関数については以降のセクションで説明します。

Function: current-time-string &optional time zone

この関数はカレントの時刻と日付を可読形式の文字列でリターンする。この文字列の先頭部分には曜日、月、日付、時刻がこの順に含まれて、それらが可変長となることはない。これらのフィールドにたいして使用される文字数は常に同じとはいえ、年は正確に4桁とはかぎらず、いつかの将来に終端に追加情報が追加されるかもしれないので、current-time-stringの出力からフィールドを抽出するよりformat-time-stringを使うほうが通常は便利です。

引数timeが与えられたら、それはカレント時刻のかわりにフォーマットする時刻を指定する。オプション引数zoneのデフォルトはカレントのタイムゾーンルール。タイムゾーンのルールを参照のこと。timeの範囲およびzoneの値はオペレーティングシステムが制限する。

(current-time-string)
     ⇒ "Fri Nov  1 15:59:49 2019"
Function: current-time

この関数はカレント時刻をLispタイムスタンプとしてリターンする。Emacsのカレントリリースにおいてタイムスタンプが(high low micro pico)という形式であったとしても、Emacsの将来のバージョンにおいて変更される予定である。タイムスタンプを他の形式に変換するためにtime-convert関数を使うことができる。時刻の変換を参照のこと。

Function: float-time &optional time

この関数はエポックからの経過秒数を浮動小数点数としてリターンする。オプション引数time-valueが与えられた場合には、カレント時刻ではなく変換する時刻を指定する。

警告: 結果は浮動小数点数なので正確ではないかもしれない。正確なタイムスタンプが必要なら使用しないこと。たとえば典型的なシステムにおいては(float-time '(1 . 10))を‘0.1’と表示するが、これは1/10より若干大きい。

time-to-secondsはこの関数のエイリアス。


Footnotes

(28)

現在のところ標準的な関数にタイムスタンプを渡す際の互換性に関する警告を避けるために、hzには少なくとも65536が必要です(以前のバージョンのEmacsではそのようなタイムスタンプは後方互換性を考慮して解釈していたため)。これらの警告はEmacsの将来のバージョンで削除される予定です。