# Time

## 概要 - Abstract

VCSSL Time ライブラリ は、時間計測や、時刻取得などの機能を提供する標準ライブラリです。

時間を取得する機能は time() 関数によって提供されます。この関数は、プログラム実行開始からの経過時間を返します。
（ いくつかの言語では、こうした関数は 1970年 1月 1日 午前 0 時 からの経過時間を返しますが、VCSSL ではそうではありません。 ）

time 関数が返す時間の精度（単位）は、標準の処理系においてはミリ秒単位です。しかし、単位変換の際に「 /1000 」のような決め打ちの数値を書く事を避けたい場合や、単位の異なる特別な処理系（現状では存在しません）への移植性を考慮したい場合などのために、time 関数の戻り値を、様々な時間単位に変換する関数も提供されています。
具体的には、millisecond 関数はミリ秒単位、second 関数は秒単位、minute 関数は分単位、hour 関数は時間単位、day 関数は日単位に変換します。
例として、適当な処理をさせて、その間の所要時間を計測するには、以下のようにします：

int t1 = time();// 終了時間を計測
[ ここで適当に時間のかかる処理を行う ]
int t2 = time(); // 開始時間を計測
int sec = second( t2 - t1 ); // 所要時間（時間の差）を秒単位で取得
print( "所要時間 [ 秒 ] = " + sec ); // 出力

また、second 関数、minute 関数、hour 関数を引数なしでコールすると、現在の時計的な時刻を返します。
同様に、day 関数、month 関数、year 関数を引数なしでコールすると、現在のカレンダーにおける日付を返します。
例として、現在の日付と時刻を表示するには、以下のようにします：

print( year() + "年" + month() + "月" + day() + "日" + hour() + "時" + minute() + "分" + second() + "秒" );

## 目次 - Index

int time()
  プログラム実行開始からの経過時間を、ミリ秒単位で返します。この関数は使用頻度が高いため、VCSSL 3.4.22 以降において、System ライブラリでもサポートされる事になりました。そのため現在は、この関数は Time ライブラリを import しなくても使用できます。（ System ライブラリに属する関数群は、全て import 不要で使用できるためです。 )
int millisecond( int t )
  time 関数が返す値などを、ミリ秒単位に変換します（つまり、そのまま返します）。
int second( int t )
  time 関数が返す値などを、秒単位に変換します。秒に満たない余りは切り捨てられます。
int minute( int t )
  time 関数が返す値などを、分単位に変換します。分に満たない余りは切り捨てられます。
int hour( int t )
  time 関数が返す値などを、時間(hour)単位に変換します。1時間に満たない余りは切り捨てられます。
int day( int t )
  time 関数が返す値などを、日単位に変換します。1日に満たない余りは切り捨てられます。なお、自転速度の揺らぎや閏秒など、天文学的・物理学的な効果は考慮されません。単純に 86400000 ミリ秒を 1 日として変換します。
int year()
  西暦カレンダーにおける現在の年を返します。
int month()
  西暦カレンダーにおける現在の月を返します。範囲は 1 ～ 12 の範囲で返します。0 ～ 11 でない事に注意してください。
int day()
  西暦カレンダーにおける現在の日を返します。
int hour()
  現在の時刻における時間を返します。
int minute()
  現在の時刻における分を返します。
int second()
  現在の時刻における秒を返します。
string date()
  西暦カレンダーにおける日付・時刻を表すテキストを返します。書式は現時点で仕様上未定となっており、処理系依存です。確実な書式が必要な場合は、year 関数や hour 関数などを用いて独自に表現してください。

## 構造体 - Structs

- なし - None -

## 変数 - Variables

- なし - None -

## 関数 - Functions

文法的定義 - Signature | int time()
関数名 - Name | time
役割 - Role | プログラム実行開始からの経過時間を、ミリ秒単位で返します。 この関数は使用頻度が高いため、VCSSL 3.4.22 以降において、System ライブラリでもサポートされる事になりました。そのため現在は、この関数は Time ライブラリを import しなくても使用できます。 （ System ライブラリに属する関数群は、全て import 不要で使用できるためです。 )
戻り値 - Return | (int型) プログラム実行開始からの経過時間（ミリ秒単位）。

文法的定義 - Signature | int millisecond( int t )
関数名 - Name | millisecond
役割 - Role | time 関数が返す値などを、ミリ秒単位に変換します（つまり、そのまま返します）。
引数 - Arguments | (int型) t : 変換したい時間（time 関数の戻り値、及びその和や差など）
戻り値 - Return | (int型) ミリ秒単位に変換された値。

文法的定義 - Signature | int second( int t )
関数名 - Name | second
役割 - Role | time 関数が返す値などを、秒単位に変換します。秒に満たない余りは切り捨てられます。
引数 - Arguments | (int型) t : 変換したい時間（time 関数の戻り値、及びその和や差など）
戻り値 - Return | (int型) 秒単位に変換された値。

文法的定義 - Signature | int minute( int t )
関数名 - Name | minute
役割 - Role | time 関数が返す値などを、分単位に変換します。分に満たない余りは切り捨てられます。
引数 - Arguments | (int型) t : 変換したい時間（time 関数の戻り値、及びその和や差など）
戻り値 - Return | (int型) 分単位に変換された値。

文法的定義 - Signature | int hour( int t )
関数名 - Name | hour
役割 - Role | time 関数が返す値などを、時間(hour)単位に変換します。1時間に満たない余りは切り捨てられます。
引数 - Arguments | (int型) t : 変換したい時間（time 関数の戻り値、及びその和や差など）
戻り値 - Return | (int型) 時間(hour)単位に変換された値。

文法的定義 - Signature | int day( int t )
関数名 - Name | day
役割 - Role | time 関数が返す値などを、日単位に変換します。1日に満たない余りは切り捨てられます。なお、自転速度の揺らぎや閏秒など、天文学的・物理学的な効果は考慮されません。単純に 86400000 ミリ秒を 1 日として変換します。
引数 - Arguments | (int型) t : 変換したい時間（time 関数の戻り値、及びその和や差など）
戻り値 - Return | (int型) 日単位に変換された値。

文法的定義 - Signature | int year()
関数名 - Name | year
役割 - Role | 西暦カレンダーにおける現在の年を返します。
戻り値 - Return | (int型) 現在の年。

文法的定義 - Signature | int month()
関数名 - Name | month
役割 - Role | 西暦カレンダーにおける現在の月を返します。 範囲は 1 ～ 12 の範囲で返します。0 ～ 11 でない事に注意してください。
戻り値 - Return | (int型) 現在の月。

文法的定義 - Signature | int day()
関数名 - Name | day
役割 - Role | 西暦カレンダーにおける現在の日を返します。
戻り値 - Return | (int型) 現在の日。

文法的定義 - Signature | int hour()
関数名 - Name | hour
役割 - Role | 現在の時刻における時間を返します。
戻り値 - Return | (int型) 現在の時間。

文法的定義 - Signature | int minute()
関数名 - Name | minute
役割 - Role | 現在の時刻における分を返します。
戻り値 - Return | (int型) 現在の分。

文法的定義 - Signature | int second()
関数名 - Name | second
役割 - Role | 現在の時刻における秒を返します。
戻り値 - Return | (int型) 現在の秒。

文法的定義 - Signature | string date()
関数名 - Name | date
役割 - Role | 西暦カレンダーにおける日付・時刻を表すテキストを返します。 書式は現時点で仕様上未定となっており、処理系依存です。確実な書式が必要な場合は、year 関数や hour 関数などを用いて独自に表現してください。
戻り値 - Return | (string型) 日付・時刻を表すテキスト。