エポック
| 日本語 | 時代 |
| 英語 | Epoch |
| ふりがな | えぽっく |
| フリガナ | エポック |
アプリケーションが使用する日時の「開始日時」。
世界標準時の「1970/01/01 00:00:00.000」である。
多くのコンピューターは、内部時計による時間を、世界標準時の「1970/01/01 00:00:00.000」からの経過ミリ秒で管理する。
この、経過時間を数える「開始時点」となる「1970/01/01 00:00:00.000」を「エポック」と呼ぶ。
現在日時等、日時の管理は多くの場合このエポックからの「のべミリ秒」で行う。
エポックからのミリ秒で日時を管理することで、秒から分への繰り上がり等を気にする必要がなくなり、整数値ひとつで管理することができる。
また、日時の表現は時代、宗教、文化によって異なるため、ミリ秒で管理することでそれらの差を吸収することができる。
そのため、古くから慣例的に、コンピューターでの時間管理はエポックからのミリ秒で行われてきた。
エポックからのミリ秒は、SystemクラスのcurrentTimeMillis()メソッドで取得できる。
また、CalendarクラスのgetTimeInMillis()メソッドや、DateクラスのgetTime()メソッドでも取得できる。
これらのメソッドで取得するミリ秒は、long型で返される。int型ではない理由は、ミリ秒という細かい数え方のため、int型の最大値を超えてしまうからである。
エポックからのミリ秒で日時を取得すると、日時の大小比較や、差の計算や増減、日時を扱うクラス間の変換を行うことができる。ただ、通常はCalendarクラスを用いれば問題ないだろう。
「エポック」とは「時代」という意味である。
つまり「1970/01/01 00:00:00.000」時点以降が「コンピューターの時代」となるわけである。
世界標準時の「1970/01/01 00:00:00.000」である。
多くのコンピューターは、内部時計による時間を、世界標準時の「1970/01/01 00:00:00.000」からの経過ミリ秒で管理する。
この、経過時間を数える「開始時点」となる「1970/01/01 00:00:00.000」を「エポック」と呼ぶ。
現在日時等、日時の管理は多くの場合このエポックからの「のべミリ秒」で行う。
エポックからのミリ秒で日時を管理することで、秒から分への繰り上がり等を気にする必要がなくなり、整数値ひとつで管理することができる。
また、日時の表現は時代、宗教、文化によって異なるため、ミリ秒で管理することでそれらの差を吸収することができる。
そのため、古くから慣例的に、コンピューターでの時間管理はエポックからのミリ秒で行われてきた。
エポックからのミリ秒は、SystemクラスのcurrentTimeMillis()メソッドで取得できる。
また、CalendarクラスのgetTimeInMillis()メソッドや、DateクラスのgetTime()メソッドでも取得できる。
これらのメソッドで取得するミリ秒は、long型で返される。int型ではない理由は、ミリ秒という細かい数え方のため、int型の最大値を超えてしまうからである。
エポックからのミリ秒で日時を取得すると、日時の大小比較や、差の計算や増減、日時を扱うクラス間の変換を行うことができる。ただ、通常はCalendarクラスを用いれば問題ないだろう。
「エポック」とは「時代」という意味である。
つまり「1970/01/01 00:00:00.000」時点以降が「コンピューターの時代」となるわけである。
// Sample.java
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class Sample
{
public static void main( String[] args )
{
// 現在の「エポックからのミリ秒」を取得します。
long l = System.currentTimeMillis();
System.out.println( l );
// 1267706219921
// 出力フォーマット。
// 「年/月/日 時:分:秒.ミリ秒」と出力します。
String format = "yyyy/MM/dd HH:mm:ss.SSS";
// 現在日時を格納したCalendarクラスのインスタンスを取得します。
Calendar now = Calendar.getInstance();
// この中に格納されている「エポックからのミリ秒」を取得します。
System.out.println( now.getTimeInMillis() );
// 1267706219953
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.953
// このインスタンス内の現在日時をリセットすると、
// エポックの日時になります。
now.clear();
System.out.println( now.getTimeInMillis() );
// -32400000
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 1970/01/01 00:00:00.000
// 注:エポックからのミリ秒が「-32400000」なのは、
// 「日本標準時のエポック」にリセットしたからです。
// 世界標準時と日本標準時の時差9時間=32400000ミリ秒
// だけ、エポックからのミリ秒がずれています。
// このインスタンスに、最初にSystemクラスの
// currentTimeMillis()メソッドで取得したミリ秒を、
// セットします。
now.setTimeInMillis( l );
System.out.println( now.getTimeInMillis() );
// 1267706219921
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.921
}
}
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class Sample
{
public static void main( String[] args )
{
// 現在の「エポックからのミリ秒」を取得します。
long l = System.currentTimeMillis();
System.out.println( l );
// 1267706219921
// 出力フォーマット。
// 「年/月/日 時:分:秒.ミリ秒」と出力します。
String format = "yyyy/MM/dd HH:mm:ss.SSS";
// 現在日時を格納したCalendarクラスのインスタンスを取得します。
Calendar now = Calendar.getInstance();
// この中に格納されている「エポックからのミリ秒」を取得します。
System.out.println( now.getTimeInMillis() );
// 1267706219953
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.953
// このインスタンス内の現在日時をリセットすると、
// エポックの日時になります。
now.clear();
System.out.println( now.getTimeInMillis() );
// -32400000
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 1970/01/01 00:00:00.000
// 注:エポックからのミリ秒が「-32400000」なのは、
// 「日本標準時のエポック」にリセットしたからです。
// 世界標準時と日本標準時の時差9時間=32400000ミリ秒
// だけ、エポックからのミリ秒がずれています。
// このインスタンスに、最初にSystemクラスの
// currentTimeMillis()メソッドで取得したミリ秒を、
// セットします。
now.setTimeInMillis( l );
System.out.println( now.getTimeInMillis() );
// 1267706219921
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.921
}
}
// Sample.java
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class Sample
{
public static void main( String[] args )
{
// 現在の「エポックからのミリ秒」を取得します。
long l = System.currentTimeMillis();
System.out.println( l );
// 1267706219921
// 出力フォーマット。
// 「年/月/日 時:分:秒.ミリ秒」と出力します。
String format = "yyyy/MM/dd HH:mm:ss.SSS";
// 現在日時を格納したCalendarクラスのインスタンスを取得します。
Calendar now = Calendar.getInstance();
// この中に格納されている「エポックからのミリ秒」を取得します。
System.out.println( now.getTimeInMillis() );
// 1267706219953
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.953
// このインスタンス内の現在日時をリセットすると、
// エポックの日時になります。
now.clear();
System.out.println( now.getTimeInMillis() );
// -32400000
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 1970/01/01 00:00:00.000
// 注:エポックからのミリ秒が「-32400000」なのは、
// 「日本標準時のエポック」にリセットしたからです。
// 世界標準時と日本標準時の時差9時間=32400000ミリ秒
// だけ、エポックからのミリ秒がずれています。
// このインスタンスに、最初にSystemクラスの
// currentTimeMillis()メソッドで取得したミリ秒を、
// セットします。
now.setTimeInMillis( l );
System.out.println( now.getTimeInMillis() );
// 1267706219921
System.out.println( new SimpleDateFormat( format ).format( now.getTime() ) );
// 2010/03/04 21:36:59.921
}
}




