Next: , Previous: , Up: System Interface   [Contents][Index]


38.8 時刻のパースとフォーマット

以下の関数はtime値と文字列内のテキストの間で変換と逆変換を行います。time値は2つから4つの整数からなるリストです(Time of Dayを参照)。

Function: date-to-time string

この関数はtime文字列stringをパースして対応するtime値をリターンする。

Function: format-time-string format-string &optional time zone

この関数はtime (省略かnilならカレント時刻)をformat-stringに応じて文字列に変換する。 この変換にはタイムゾーンルールzone (デフォルトはカレントのタイムゾーンルール)を使用する。Time Zone Rulesを参照のこと。引数format-stringには、時刻を置換する‘%’シーケンスを含めることができる。以下は‘%’シーケンスは何を意味するかのテーブルである:

%a

曜日の短縮名を意味する。

%A

曜日の完全名を意味する。

%b

月の短縮名を意味する。

%B

月の完全名を意味する。

%c

%x %X’のシノニム。

%C

これはlocale固有の意味をもつ。デフォルトlocale(Cという名前のlocale)では‘%A, %B %e, %Y’と等価。

%d

0パディングされた年月日の日。

%D

%m/%d/%y’のシノニム。

%e

ブランクでパディングされた年月日の日。

%F

これはISO 8601の日付フォーマット ‘\"%Y-%m-%d\"’ を意味する。

%g

これはその世紀内のISO週に対応する年を意味する。

%G

これはISO週に対応する年を意味する。

%h

%b’のシノニム。

%H

時分秒の時(00から23)を意味する。

%I

時分秒の時(01から12)を意味する。

%j

年内の経過日(001から366)を意味する。

%k

ブランクでパディングされた時分秒の時(0から23)を意味する。

%l

ブランクでパディングされた時分秒の時(1から12)を意味する。

%m

年月日の月(01から12)を意味する。

%M

時分秒の分(00から59)を意味する。

%n

改行を意味する。

%N

ナノ秒(000000000–999999999)を意味する。より少ない桁数を求める場合にはミリ秒は‘%3N’、マイクロ秒は‘%6N’を使用する。余分な桁は丸めずに切り捨てられる。

%p

必要に応じて‘AM’か‘PM’を意味する。

%r

%I:%M:%S %p’のシノニム。

%R

%H:%M’のシノニム。

%S

時分秒の秒(00から59)を意味する。

%t

タブ文字を意味する。

%T

%H:%M:%S’のシノニム。

%u

これは数字で表した曜日(1から7)で、月曜日が1。

%U

週の開始を日曜日とみなした年内の週(01から52)。

%V

これはISO 8601にたいする年内の週を意味する。

%w

数字で表した曜日(0から6)で日曜日が0。

%W

これは週の開始を月曜日とみなした年内の週(01から52)。

%x

これはlocale固有の意味をもつ。デフォルトlocale(Cという名前のlocale)では‘%D’と等価。

%X

これはlocale固有の意味をもつ。デフォルトlocale(Cという名前のlocale)では‘%T’と等価。

%y

世紀を含まない年(00から99)を意味する。

%Y

世紀を併なう年を意味する。

%Z

タイムゾーンの短縮形(たとえば‘EST’)を意味する。

%z

数値的オフセットによるタイムゾーン(たとえば‘-0500’)を意味する。

これら‘%’シーケンスのすべてにおいてフィールド幅とパディングのタイプを指定できる。これはprintfでの指定のように機能する。フィールド幅は桁数として‘%’シーケンスの中間に記述する。このフィールド幅を‘0’で開始すると0によるパディングを意味する。フィールド幅を‘_’で開始すればスペースによるパディングを意味する。

たとえば‘%S’は分内で経過した秒数を指定するが‘%03S’は3箇所の0、‘%_3S’は3箇所にスペースをパディングすることを意味する。ただの‘%3S’は0でパディングを行う。これは‘%S’が通常において2箇所にパディングする方法のため。

文字‘E’と‘O’は、‘%’と上記テーブルのアルファベットのいずれかの間に使用されたときには修飾子として作用する。‘E’は日付と時刻にカレントlocaleの代替バージョンの使用を指定する。たとえば日本のlocaleでは、%Exにより日本の元号にもとづいた日付フォーマットを得られるだろう。‘E’は‘%Ec’、‘%EC’、‘%Ex’、‘%EX’、‘%Ey’、‘%EY’での使用が許されている。

O’は通常の10進数字(訳注: アラビア数字)ではなく、カレントlocaleの数字の代替表現を使用する。これは数字を出力する、ほとんどすべてのアルファベットで使用が許されている。

この関数は処理のほとんどを行うためにCライブラリー関数strftimeを使用している(Formatting Calendar Time in The GNU C Library Reference Manualを参照)。その関数とやり取りするためにlocale-coding-system (Localesを参照)で指定されたコーディングシステムを使用して最初に引数のエンコーディングを行う。strftimeが結果文字列をリターンした後に同じコーディングシステムを使用してformat-time-stringはデコードを行う。

Function: format-seconds format-string seconds

この関数は引数secondsformat-stringに応じた年、日、時、...の文字列に変換する。引数format-stringには変換を制御する‘%’シーケンスを指定することができる。以下のテーブルは‘%’の意味:

%y
%Y

年間365日での年の整数。

%d
%D

年月日の日。

%h
%H

時分秒の時の整数。

%m
%M

時分秒の分の整数。

%s
%S

時分秒の秒の整数。

%z

非プリント制御フラグ。これを使用する際には他の指定はサイズ減少順、すなわち年、日、時刻、分、...のように与えなければならない。最初の非0変換に遭遇するまで‘%z’の左側の結果文字列は生成されない。たとえばemacs-uptime (emacs-uptimeを参照)で使用されるデフォルトフォーマットでは、秒数は常に生成されるが年、日、時、分はそれらが非0の場合のみ生成されるだろう。

%%

リテラルの‘%’を生成する。

大文字のフォーマットシーケンスは数字に加えて単位を生成するが、小文字フォーマットは数字だけを生成する。

%’に続けてフィールド幅を指定できる。指定したフ幅より短ければブランクでパディングされる。この幅の前にオプションでピリオドを指定すれば、かわりに0パディングを要求する。たとえば"%.3Y""004 years"を生成するだろう。

警告: この関数はmost-positive-fixnumを超えないsecondsの値でのみ機能する(most-positive-fixnumを参照)。