日付と時刻の関数

DateList[]在の日付と時刻を返す(表示書式は
DateList[TimeZone->z]時刻帯 z における現在の日付と時刻を返す
$TimeZone使用しているコンピュータシステムに設定されている時刻帯を参照する

日付と時刻の参照

現在の日付と時刻を調べる.
In[1]:=
Click for copyable input
Out[1]=

関数DateListを使うと,オペレーティングシステムの管理する現在の日付と時刻を得ることができる.DateListは夏時間の調整等はオペレーティングシステムにおいてすでに行われていることを前提とする.さらに,オペレーティングシステムレベルで適当な時刻帯が選択済みであることを前提とする.

変数$TimeZoneは,使用中のコンピュータシステムによって仮定される現在の時間帯を返す.時刻帯の値はローカル時からグリニッジ標準時(GMT)を差し引くことで得られる時間差を示す.例えば,米国東部標準時間(EST)ならば,この値はになる.また,夏時間は時刻帯の値に含まれるので,米国東部夏時間(EDT)なら値はになる.

コンピュータで使われている時刻帯を参照する.
In[2]:=
Click for copyable input
Out[2]=
の時刻帯における現在の時間を参照する.日本の標準時に相当する.
In[3]:=
Click for copyable input
Out[3]=
AbsoluteTime[]1900年1月1日午前0時から現在までに経過した時間 (単位:秒)
SessionTime[]Mathematica の現行セッションにおいて開始時から現在までに経過した時間 (単位:秒)
TimeUsed[]Mathematica の現行セッションで使ったCPU時間(単位:秒)
$TimeUnitオペレーティングシステムの管理する時間更新の最小単位

時間に関する関数

オペレーティングシステムの時間管理は一定間隔で行われている.この時間幅は$TimeUnitを参照することで知ることができる.通常,この値は秒あるいは秒程度に設定される.

Pause[n]少なくとも n 秒間一時停止する

計算中の一時停止

各種の時間情報を調べる.
In[4]:=
Click for copyable input
Out[4]=
10秒待ってから,時間情報を取得する.待機しようがしまいが,TimeUsed[]の返してくるCPU時間は同じことに注目.
In[5]:=
Click for copyable input
Out[5]=
AbsoluteTime[date]日付を絶対時間へ変換
DateList[time]絶対時間を日付へ変換

日付情報と絶対時間の変換

日付を調べ,に取っておく.
In[6]:=
Click for copyable input
Out[6]=
現在の日付に1ヶ月割増しする.
In[7]:=
Click for copyable input
Out[7]=
1ヶ月間に相当する秒単位の時間を計算する.
In[8]:=
Click for copyable input
Out[8]=
DateList["string"]日付の文字列をリストに変換する
DateList[{"string",{"e1","e2",...}}]から要素を抽出することにより得られる日付のリストを返す

異なる日付形式からの変換

DateList["string"]を使うと,日付形式が十分に明確である限り,日付文字列を日付リストに変換することができる.

以下は文字列を日付として解釈しようとする.
In[9]:=
Click for copyable input
Out[9]=

変換をより制御するために,文字列に現れるデータ要素の順序とタイプを指定することができる.要素には等の文字列が使える.

指定された要素を使って日付を抽出する.
In[10]:=
Click for copyable input
Out[10]=

日付要素の区切り記号に文字や数字が含まれる場合は,それも日付要素の一部として指定しなければならない.

文字を含む日付を区切り記号として抽出する.
In[11]:=
Click for copyable input
Out[11]=
DateString[]現在のローカル日時を表す文字列
DateString[datespec,elems]datespec で与えられる日付と時間の要素 elems を返す

異なる日付形式への変換

DateStringは日付と時間をきれいに文字列表現するために使われる.正確な出力形式は等の日付要素の長いリストから指定することができる.

現在の日時をデフォルト形式で返す.
In[12]:=
Click for copyable input
Out[12]=
指定されたデータの形式を指定する.
In[13]:=
Click for copyable input
Out[13]=
DatePattern[elems]データを指定の要素とマッチさせる文字列パターン

文字列から日時を抽出する

DatePattern[elems]は文字列マッチ関数の文字列パターンとして使うことができる.日付要素はDateListで使われるのと同じであるが,デフォルトの日付要素の区切り記号はの記号に限られる.他の区切り記号は日付要素のリストで明示的に与えることができる.

以下は文字列から指定された形式の日付を抽出する.
In[14]:=
Click for copyable input
Out[14]=
明示的な区切り記号のある日付を抽出する.
In[15]:=
Click for copyable input
Out[15]=
DateListPlot[list]日付座標のあるデータのリストからプロットを生成する
DateListPlot[list,datespec]datespec で指定された日付を持つデータのリストからプロットを生成する
DateListLogPlot[list]日付座標のあるデータのリストから線形対数プロットを生成する
DateListLogPlot[list,datespec]datespec により指定された日付のリストから線形対数プロットを生成する

日付座標を持つデータのプロット

DateListPlotは日付あるいは時間の水平座標を持つデータをプロットするのに使うことができる.日付はDateListDateStringAbsoluteTimeと同様にリスト,文字列,絶対時間のいずれでもよい.日付指定 datespec は日付をとして与えられるデータに関連付けるために与えることができる.DateListLogPlotではデータを対数垂直スケールでプロットすることができる.

以下で金融の時系列データを集める.
In[16]:=
Click for copyable input
金融データをプロットする.
In[17]:=
Click for copyable input
Out[17]=
同じデータを対数スケール上にプロットする.
In[18]:=
Click for copyable input
Out[18]=
次は明示的な日付を含まない月別データをプロットする.
In[19]:=
Click for copyable input
Out[19]=
Timing[expr]expr を評価し,評価に使ったCPU時間(リスト形式)と評価結果を表示する
AbsoluteTiming[expr]expr を評価し,評価に使った絶対時間を与える

評価時間の計測

1つの Mathematica 式の評価にどれだけの時間がかかるかを知りたければ関数Timingを使う.TimingTimeUsedの増分に相当する.注意してほしいが,Timingは式評価のためにカーネルが使ったCPU時間だけを計測する.出力への書式適用や外部プログラムで使った時間は含まれない.

AbsoluteTimingを用いて絶対的な経過時間を計測することができる.AbsoluteTimingで計測される時間もTimingで計測される時間も評価される式だけではなく,環境条件によっても違ってくるので注意が必要である.

第一に,使用時間は使っているコンピュータの機種やオペレーティングシステムに依存する.CPU処理の速度だけでなく,メモリキャッシュの設定等にも依存する.また,言うまでもないが,計算で使われるカーネルの内部コードに使われているコンパイル時の最適化処理の詳細にも依存する.

さらに,計測対象となる計算が行われているときのセッション状態にも使用時間は依存する.これは,実時間的にカーネルが採用する計算の最適化法の多くは前の計算結果に依存する形で選定されるためである.例えば,計算を進める上で,カーネルは前に取得した結果を保持しておき同じ式が現れたなら不必要には再評価をせず,保持した結果を呼び戻す,というような処理がよく行われる.さらに,組込み関数によっては,最初に呼び出したときに内部に値のテーブルを作成しておき,再度同じ形式で呼出しがあったときにはそのテーブルを参照することで実行に必要な時間を短縮する,というような処理が行われる.このような理由から,同じ式を繰り返し計算させても,セッションの現況が違うため,前とは違った時間が計測されることもしばしばある.

計算に費したCPU時間を見る.計算結果自体は表示しないように(Nullとなるように)セミコロンを付け足しておく.
In[20]:=
Click for copyable input
Out[20]=
同じ階乗を計算する.前回の計算で内部テーブルができているので,計測できるほどのCPU時間はかからない.
In[21]:=
Click for copyable input
Out[21]=
しかし,全体時間はある程度計測できる.
In[22]:=
Click for copyable input
Out[22]=

Timingにより計測される時間は,使われるコンピュータによっても違うが,ある最小時間幅($TimeUnit)までの精度でしかないことに注意すること.例えば,0〜$TimeUnitの間の時間ならすべて0として報告されてしまう.

TimeConstrained[expr,t]t 秒経っても expr の計算が終了しない場合は計算を中断する
TimeConstrained[expr,t,failexpr]制限時間を過ぎた場合,戻り値として failexpr を返す

計算時間の制限

対話的に計算を進める場合,非常に長い時間がかかるようならば手動で計算を途中で止めたいことがある.TimeConstrainedを使えば,プログラムの中から自動的に計算を強制的に中止することが可能になる.TimeConstrainedで指定した時間内に式の評価が終了しない場合は,評価は中断され,$Aborted(もしくは,特別指定した式)が戻り値として返される.

TimeConstrainedを使うと,最初にある計算法で問題を解かせてみて,時間がかかるようならば,別の方法を試してみることも可能である.ただし,設定した時間が経過しても計算が中断しない場合もあるので注意が必要である.このような状況はカーネルが中止不可の計算部分を処理しているときに起る.さらに,同じTimeConstrainedの指定をしても,違うコンピュータで評価した場合,結果が違ってくることがある.

New to Mathematica? Find your learning path »
Have a question? Ask support »